【发布时间】:2009-07-10 05:15:55
【问题描述】:
假设我正在设计一个可以处理任何数据库技术以创建连接、执行命令和检索数据等的类。
如果我需要为现有的 RDBMS(如 SQL Server、Oracle、FireBird 等)创建一个通用数据库处理类,我应该使用哪个 .net 抽象类/接口 {DbConnection, DbCommand, DbParameter,... } 或 {IDbConnection, IDbCommand, IDbParameter,...}?
我应该使用类似的代码
public bool CreateConnection(DatabaseTypeEnum type)
{
DbConnection conn ;
if(type==DatabaseTye.Oracle)
{
//....
}
}
public DbDataReader GetData()
{
DbCommand comm;
//...
}
或者,
public bool CreateConnection(DatabaseTypeEnum type)
{
IDbConnection conn ;
if(type==DatabaseTye.Oracle)
{
//....
}
}
public IDbDataReader GetData()
{
IDbCommand comm;
//...
}
那么,为什么?
【问题讨论】:
-
你的意思是问:我什么时候需要创建一个通用的......?为什么?
-
请查看更新后的问题。
-
建议使用接口而不是确切的实现来编程。因此,在您的代码中,首选第二个选项。类似的讨论已经在 Stack Overflow 中讨论过:stackoverflow.com/questions/383947/…stackoverflow.com/questions/570302/when-are-interfaces-needed
-
在谈论 C# 时要小心使用“通用”这个词,因为它具有与这个问题无关的非常具体的含义。