参数化异构索引启用的对象

时间:2012-12-18 04:58:02

标签: c#

有没有办法根据对象具有索引属性来参数化对象?

示例

public void LoopThroughIndexer(IndexEnabledClass parameter)
{
    object value1 = parameter[1]
    object value2 = parameter[2]
    //Do stuff with value1 and value2
}

先谢谢大家!

编辑1: 感谢您的关注。为了清理,通过 parameterise ,我的意思是将它作为方法中的参数;在我的示例中,parameter具有广泛定义的类型IndexEnabledClass。我的问题是,是否存在类似IndexEnabledClass的内容。

答案似乎不是,但您可以使用IEnumerable<E>

2 个答案:

答案 0 :(得分:2)

我认为没有任何内置方法可以做到这一点。但你可以考虑一些变化。

定义通用接口:

public interface IIndexer<T, U>
{
    T this[U index] { get; set; }
}

根据需要实施(以下仅为示例):

public class SomeClass : IIndexer<SomeClass, int>
{
    public SomeClass this[int index]
    {
        get
        {
            //...
        }
        set
        {
            //...
        }
    }
}

假设int是索引,请创建一个方法:

public static void DoSomething<T>(IIndexer<T, int> obj)
{
    for (int i = 0; i < 5; i++)
    {
        T o = obj[i];
        // do what you need
    }
}

并使用方法:

SomeClass sc = new SomeClass();
DoSomething(sc);

答案 1 :(得分:-1)

似乎没有类似IndexEnabledClass的东西(在FCL中)。但是,您可以自己实现它。

您可以使用C# Indexers

// Indexer declaration. 
public int this[int index]
{
    // get and set accessors
}