S>Тогда ваш единственный выход — switch.
S>То есть примерно так:
S>S>int BinaryOp(int a, int b, int functionNo) // весь полиморфизм - здесь
S>{
S> switch(functionNo)
S> {
S> case 0: return Add(a, b);
S> case 1: return Mul(a, b);
S> case 2: return Sub(a, b);
S> default: throw new Exception("Unknown function no: " + functionNo.ToString());
S> }
S>}
S>int Foo(int[] data, int initValue, int functionNo)
S>{
S> var acc = initValue;
S> for(var item in data)
S> acc = BinaryOp(acc, item);
S> return acc;
S>}
S>
Понял, спасибо.
Очень похожие решения также написали выше (про диспетчер, хотя суть немного отличается) и ниже (call_by_name).
https://rsdn.org/forum/design/8788561.1Автор: Stanislav V. Zudin
Дата: 28.07 17:43
https://rsdn.org/forum/design/8788641.1Автор: vsb
Дата: 28.07 20:49
Получается, это действительно единственный выход.