类静态?
我目前有一个名为“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?