【发布时间】:2014-07-20 22:04:39
【问题描述】:
在我的 win 表单应用程序中,我有一个名为 DataServices 的服务类,当涉及到 CRUD 操作时,它为所有其他客户端类(大约 12 个类)提供数据库访问服务。 (我正在使用 ADO.net)。这个类有很多公共方法。以下是该类实现的部分接口。
interface IDataService
{
BankAccount GetByACNo(string acNo);
bool InsertAccount(IBankAccount ba);
bool UpdateAccount(IBankAccount ba);
bool InsertClient(IClient newClient);
Client GetClientByCID(int CID);
Client GetClientByName(string clientName);
void UpdateClient(IClient changedClient);
DataTable LoadClientNamesAndCID();
DataTable LoadPointNamesAndPID();
bool InsertPoint(IPoint newPoint);
Point GetPointByPID(string id);
bool UpdatePoint(IPoint point);
Point GetPointByName(string id);
List<string> GetPIDs(string firstLetterOfPointName);
// other methods...
}
由于这些方法没有使用任何实例变量,是否将所有方法都设为static?
【问题讨论】:
-
你不能在接口中声明静态方法。
-
现在这些方法不是静态的。这就是为什么我要问它们是否应该是静态的?
-
您打算如何将它们设为静态?从实现它们的类中删除接口?我想说的是(这可能不是您要问的)是您不能在接口中将方法标记为静态,也不能在实现接口的类中将它们实现为静态.
-
实际上我想知道的是保持它们原样(如上)或使它们静态(如你所说的删除接口......)更好的做法是什么?
-
使用接口的要点是您可以替换 DAL 的另一个实现。例如对测试很有用。使用静态方法完全违背了这一点,它们只能有一个实现。要么不使用接口,要么正确使用实例方法。
标签: c# .net static ado.net data-access-layer