有没有办法根据对象具有索引属性来参数化对象?
示例:
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>
答案 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
}