我正在编写一个函数,它是从一种类型的对象到另一种对象的映射器。作为 Map 方法的参数传入的对象应该有一个字符串索引器以在对象中找到合适的值(或不找到)。我真的不在乎映射器是否获得字典、DataRow、DataReader 等。
有没有办法指定传递给方法的参数应该实现字符串索引器?我找不到类似的东西。
如果不可能的话,我会使用反射将类型转换为可用的类型,但我想知道是否有适当的方法来处理这个问题。
最佳答案
不,你不能那样做。您可以使用像安德鲁那样的界面,或者您可以传入一个 Func<T, string>
。检索索引值。
public void ConsumeIndexedFunction<T>(Func<string, T> something)
{
var foo = something("bar");
// do something with foo
}
public void TestMethod(
Dictionary<string, object> myDictionary,
DataTable myDataTable,
IDataReader myDataReader)
{
ConsumeIndexedFunction(x => myDictionary[x]);
ConsumeIndexedFunction(x => myDataTable.Rows[0][x]);
ConsumeIndexedFunction(x => myDataReader[x]);
}
(感谢 Michael Meadows 将这个想法充实成一个例子。谢谢!)
关于C#:方法参数需要索引器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1069073/