为什么Datareader无法初始化?

时间:2014-02-07 09:40:44

标签: c# .net ado.net

我们在classname之前使用abstract关键字来限制创建类的实例。

但是datareader不是一个抽象类,但是我们无法创建那个实例。你能解释一下原因吗?

我搜索了它然后我发现它没有构造函数,这就是为什么我们不能创建对象,但据我所知,如果没有构造函数,那么编译器会自动创建一个默认构造函数。

请帮忙......

2 个答案:

答案 0 :(得分:6)

DbDataReader是一个抽象类。如果你的意思是SqlDataReader,它没有公共构造函数,这就是你无法创建实例的原因。它只有一个internal构造函数(ILSpy):

// System.Data.SqlClient.SqlDataReader
internal SqlDataReader(SqlCommand command, CommandBehavior behavior)
{
    // ...
}

来自MSDN

  

要创建SqlDataReader,您必须调用ExecuteReader方法   SqlCommand对象,而不是直接使用构造函数。

一般来说,最好避免实例化DataReader,因为它只需要通过SqlCommand.ExecuteReader创建。

答案 1 :(得分:0)

只需创建自己的类来实现 DbDataReader 并覆盖方法

public class InMemoryDbReader: DbDataReader
{
    ...
}