C# 如何将SqlDataReader转换/转换为IDatareader
将SqlDataReader强制转换为IDatareader的最简单方法是什么 或者将列表对象转换为IDataReader是否更容易/可能 将SqlDataReader转换为IDatareader的最简单方法是什么 由于C# 如何将SqlDataReader转换/转换为IDatareader,c#,.net,idatareader,C#,.net,Idatareader,将SqlDataReader强制转换为IDatareader的最简单方法是什么 或者将列表对象转换为IDataReader是否更容易/可能 将SqlDataReader转换为IDatareader的最简单方法是什么 由于SqlDataReader实现了IDataReader,这只是一个隐式转换: SqlDataReader typedReader = ... IDataReader untypedReader = typedReader; SqlDataReader是一个IDataReader
SqlDataReader
实现了IDataReader
,这只是一个隐式转换:
SqlDataReader typedReader = ...
IDataReader untypedReader = typedReader;
SqlDataReader
是一个IDataReader
(它实现了接口),因此您根本不需要转换它。只要代码需要IDataReader
,就可以使用Sql实现
// Given a method with this signature
public void ProcessData(IDataReader reader);
// You can do this
SqlDataReader sqlReader = command.ExecuteReader();
ProcessData(sqlReader);
至于
List
和IDataReader
:除了可枚举之外,它们做的事情非常不同。最显著的区别是数据读取器提供了对列数据的访问(主要是因为它实现了IDataRecord
接口),这对于大多数列表来说没有意义
您可以实现一个适配器,通过数据读取器接口访问
列表
,但这将是一个不合适的接口,并且需要大量的工作。或者您可以直接转换它,但正如前面所述,除非您正在创建或使用通用接口,否则它基本上是不必要的,因为IDbDataReader
的所有属性和方法都可用于SqlDataReader
((IDbDataReader)typedReader).SomeMethod();
转换文件的最简单方法是什么
SqlDataReader到IDatareader
你不能。SqlDataReader
类不是IDataReader
interfadce
用于铸造(分配给变量)使用
但是:这不是一种转换。这是演员阵容。由于无法实例化接口,因此无法根据定义将其转换为INTERFACE。
SqlDataReader
已实现IDataReader
。您可以发布一些代码来显示您遇到的实际问题吗?这不是真正的装箱(如果SomeMethod
返回一个实现IDbReader
的结构,可能会,但似乎不太可能)@Marc,很抱歉输入错误。我需要更多的帕伦斯。帕伦斯更好,但那仍然不是拳击。。。装箱是指将值类型强制放入引用类型容器(对象
或不受泛型约束的接口)@Marc,啊。。。没错。我已更新为cast
而不是box
。谢谢那更合适吗?
IDataReader untypedReader = typedReader;