我在许多示例中看到了一种用法(IDataReader而不是DbDataReader使用其他ADO.NET接口而不是相应的类).
我知道这IDataReader是一个接口,DbDataReader是一个类,依此类推......我的问题不是关于接口如何与类不同.
IDataReader 描述了通用数据读取器的接口.
DbDataReader 也是通用的(但是抽象类).
他们的用法示例似乎是等效的.
为什么要使用通用数据读取器接口而不是使用通用数据读取器类?哪些情况只需要使用界面?哪些情况只需要使用课程?
一个典型的例子:
DbCommand cmd = conn.CreateCommand();
.....................
using (IDataReader reader = cmd.ExecuteReader())
{
grid.DataSource = reader;
grid.DataBind();
}
Run Code Online (Sandbox Code Playgroud)
DbDataReader也是通用的
嗯,这是抽象的,但不是通用的.可能是一个语义的说法,但它是一个基类为不同的阅读器(SqlDataReader,OleDbDataReader等)
在抽象基类上使用接口的主要好处是,如果有人决定使用不继承的数据读取器DbDataReader.
哪些情况只需要使用课程
总是创建具体的类 - 接口只是用来表示"我不关心具体类是什么,只要它遵循与这些方法/属性的契约".
| 归档时间: |
|
| 查看次数: |
1387 次 |
| 最近记录: |