C#:方法参数需要索引器

标签 c#

我正在编写一个函数,它是从一种类型的对象到另一种对象的映射器。作为 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/

相关文章:

c# - 无法使用 for 循环通过用户输入用 double 值填充数组。 C#

c# - WebApi OData 即使在设置 MaxTop 后,已超过 Top 查询的 '0' 限制

c# - 通过指纹查找证书

c# - 如何在文本框中只允许数字和负号 "-"

c# - 将一行数据转换成字符串列表

c# - 在 MVC EF 中导航多个关系

c# - 我想使用 C# 以表格格式通过电子邮件发送存储在本地的屏幕截图?

c# - 如果参数在 IS 之后,Npgsql 会抛出错误

c# - Moq 具有匿名类型的函数

c# - ASP.NET MVC3 绑定(bind)到子类