Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
.net 为什么System.Data.SqlClient.SqlDataReader没有构造函数_.net - Fatal编程技术网

.net 为什么System.Data.SqlClient.SqlDataReader没有构造函数

.net 为什么System.Data.SqlClient.SqlDataReader没有构造函数,.net,.net,请解释一下不给SqlDataReader一个公共构造函数有什么好处。不使用新关键字创建SqlDataReader对象有什么好处 谢谢, TinksSqlDataReader设计为仅使用ADO.NET框架中的SqlCommand或其他数据源的结果创建。我假设,在与SQL Server数据库的连接中枚举查询结果需要为读者提供许多内部实现方面,而ADO.NET类之外的任何人都无法提供这些方面 如果您想自己创建一个datareader(只有在实现新的数据提供程序时才需要这样做),那么就有了IDataRe

请解释一下不给SqlDataReader一个公共构造函数有什么好处。不使用新关键字创建SqlDataReader对象有什么好处

谢谢,
Tinks

SqlDataReader设计为仅使用ADO.NET框架中的
SqlCommand
或其他数据源的结果创建。我假设,在与SQL Server数据库的连接中枚举查询结果需要为读者提供许多内部实现方面,而ADO.NET类之外的任何人都无法提供这些方面

如果您想自己创建一个datareader(只有在实现新的数据提供程序时才需要这样做),那么就有了
IDataReader
接口

如果您想要自定义datareader行为(例如,如果您正在为ADO.NET编写一个包装器库,它提供了一些额外的行为,如自动记录异常、自动重试等),那么您需要通过将
SqlDataReader
作为您正在创建的任何类的私有成员来封装它(例如,假设您正在创建一个
ExceptionLoggingDataReader
)。您并没有真正更改SQL数据访问行为本身,这就是为什么不允许子类化
SqlDataReader
的原因