出于某种原因,这段代码:
MethodInfo iDataReaderIndexerProperty = typeof(IDataReader).GetProperties()
.Single(property => property.GetIndexParameters().Length > 0)
.GetGetMethod();
失败。如果我将IDataReader
替换为IMyInterface
定义为:
interface IMyInterface
{
String this[Int32 index] { get; }
}
它工作正常。 IDataReader
如何定义它的索引器?
答案 0 :(得分:6)
有两个索引器,一个采用int,一个采用字符串。由于您使用Single
并且有两个项匹配,因此会抛出异常。
您有几种选择:
First
获取两个Where
并将两个索引器作为序列处理答案 1 :(得分:6)
该索引器是在IDataRecord
上定义的,而不是IDataReader
;所以你需要从typeof(IDataRecord)
查询,和使用Servy观察到有多个重载(string
vs int
)。