кланяюсь Саймон Свенссон - который показывает способ сделать это, если вы унаследовали от DynamicObject - для более тесной вперед, не динамической точки зрения: не
Извините, но нет - но есть типы объектов, которые могут быть вызванными - например, делегатами.
Func<int, int> myDelagate = x=>x*2;
int four = myDelagate(2)
Существует свойство по умолчанию, хотя - что должен иметь по крайней мере один параметр и его доступ выглядит доступа к массиву:
class Test1
{
public int this[int i, int j]
{
get { return i * j; }
}
}
Calling
Test1 test1 = new Test1();
int six = test1[2, 3];
Затем вы можете сделать некоторые действительно глупые вещи с такими делегатами:
class Test2 // I am not saying that this is a good idea.
{
private int MyFunc(int z, int i)
{
return z * i;
}
public Func<int, int> this[int i] { get { return x => MyFunc(x, i); } }
}
Тогда называя это выглядит странно, как это:
Test2 test = new Test2();
test[2](2); // this is quite silly - don't use this.....
+1 Удивительный вопрос. – ClosureCowboy