类静态?

我目前有一个名为“SqlData”的类,其中包含连接到我的MS-SQL数据库所需的所有方法。

它包含插入,删除和更新不同类型表的方法 - 因此在我的WPF应用程序的许多Windows中使用。

假设接近90%的WPF-Windows正在调用至少三种我用于加载,插入和更新不同记录的SqlData方法的方法...

目前,我需要在每个窗口中实例化我的Sql-Class - 因此我正在考虑让整个Class都是静态的,所以我不需要每次都实例化它。

但是我也读过,在与外部服务器(如WebServices或Databases)通信时不要使用静态类。

你能告诉我应该怎么继续吗?

在我的类中使用了几个方法(bool返回true,当语句完成时,否则为false):

public DataTable GetAllSomething(DataTable _data)

public bool WriteSomething(Object something,out int insertedId)

公共布尔DeleteSomething(对象的东西)

谢谢!


目前,我需要在每个窗口中实例化我的Sql-Class - 因此我正在考虑让整个Class都是静态的,所以我不需要每次都实例化它。

在.NET中实例化一个类所花费的时间太低,以至于你不应该担心。 就个人而言,我不使用静态类,因为它们在应用程序的不同层之间引入强耦合,使得单元测试更加困难。

所以我宁愿抽象接口(或抽象类)后的所有数据库访问,然后针对特定数据库提供此接口的实现。


我总是在我的应用程序开始时创建一个数据库对象,并将它传递给所有需要它的窗口和类的构造函数。 它给了我添加数据的能力,就像连接字符串一样,只有在开始时才需要,并且在建立数据库连接之前没有机会调用方法(可以使用静态方法),因为这是在构造函数。


不要这么做,每次需要时都可以创建一个类的实例,这没什么不妥。

即使你现在还没有这样做,你可以想象将来会很快使用某种依赖注入,或者你可以使用.NET提供的任何测试框架编写单元测试,一般情况下,你将有更多的选择没有静态类。

链接地址: http://www.djcxy.com/p/54743.html

上一篇: Class static?

下一篇: Does changing the src attribute of an image stop the image from downloading?