是否有任何可能的方法使一個索引器使用非全局索引器的整個類?這是我想要做的事情的要點。請注意,在這個例子中,你應該假裝我不能移動data
或創建另一個Dictionary
。自定義名稱索引器
class MyClass
{
protected Dictionary<string,object> data = new Dictionary<string,object>();
public object Foo[int index]
{
get {
string name = String.Format("foo{0}",index);
return data[name];
}
}
public object Bar[int index]
{
get {
string name = String.Format("bar{0}",index);
return data[name];
}
}
}
我會再能引用名爲foo15
或bar12
的data
的一個項目,像這樣
MyClass myClass = new MyClass();
Console.WriteLine(myClass.Foo[15]);
Console.WriteLine(myClass.Bar[12]);
我知道你可以做到這一點,但是這不是我想要的。
public object this[string index]
{
get {
return data[index];
}
}
爲什麼你想要這第一個地方?您如何預期其行爲與普通索引器不同? – EJoshuaS
@EJoshuaS,我不想公開'data'的所有屬性,但我也不想定義'FooX',其中X是一個數字15次。這會導致一次又一次的相同的代碼,並且很難迭代'FooX'屬性。我想讓它更容易,所以'MyClass'的用戶可以引用'Foo [15]'。 –
@EJoshuaS,我懷疑我最終不得不使'Foo'成爲一個函數(例如'public object Foo(int index){return data [String.Format(「foo {0}」,index)];}' ,但我真的更喜歡使用屬性 –