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

时间:2014-02-20 07:52:45

标签: .net

请某人通过不给SqlDataReader提供公共构造函数来解释可能有什么优点。不使用新关键字创建SqlDataReader对象有什么好处。

谢谢, Tinks

1 个答案:

答案 0 :(得分:2)

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

如果你想自己创建一个datareader(如果你正在实现一个新的数据提供者,你只需要这样做),那就是IDataReader接口。

如果您想自定义datareader行为(例如,如果您正在为ADO.NET编写一个包装器库,它提供了一些额外的行为,例如自动记录异常,自动重试等),那么您可能希望封装SqlDataReader使其成为您正在创建的任何类的私有成员(例如,假设您正在创建ExceptionLoggingDataReader)。您实际上并没有真正更改SQL数据访问行为,这就是为SqlDataReader创建子类不是允许选项的原因。