当前位置:  开发笔记 > 编程语言 > 正文

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

如何解决《C#:需要方法参数的索引器》经验,为你挑选了2个好方法。

我正在编写一个函数,它是从一种对象到另一种对象的映射器.作为Map方法的参数传入的对象应该有一个字符串索引器,以在对象中找到适当的值(或不是).我真的不在乎mapper是否有Dictionary,DataRow,DataReader等.

有没有办法具体说明传递给方法的参数应该实现字符串索引器?我找不到类似的东西.

如果不可能,我将使用反射将类型转换为可用的类型,但我想知道是否有正确的方法来处理它.



1> mqp..:

不,你做不到.您可以使用像Andrew这样的界面,或者您可以传入一个Func检索索引值的界面.

public void ConsumeIndexedFunction(Func something)
{
    var foo = something("bar");
    // do something with foo
}

public void TestMethod(
    Dictionary myDictionary,
    DataTable myDataTable,
    IDataReader myDataReader)
{
    ConsumeIndexedFunction(x => myDictionary[x]);
    ConsumeIndexedFunction(x => myDataTable.Rows[0][x]);
    ConsumeIndexedFunction(x => myDataReader[x]);
}

(感谢Michael Meadows将这个想法充实成一个例子.谢谢!)



2> Andrew Hare..:

您可以创建如下界面:

interface IFoo
{
    String this[Int32 index] { get; set; }
}

实现此接口的所有类型都必须实现字符串索引器,如果方法的参数类型是IFoo您可以知道它将具有索引器.

推荐阅读
小白也坚强_177
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有