我们在classname之前使用abstract关键字来限制创建类的实例。
但是datareader不是一个抽象类,但是我们无法创建那个实例。你能解释一下原因吗?
我搜索了它然后我发现它没有构造函数,这就是为什么我们不能创建对象,但据我所知,如果没有构造函数,那么编译器会自动创建一个默认构造函数。
请帮忙......
答案 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
{
...
}