Я знаю, что могу объявить делегатов с постоянными параметрами по умолчанию, такими как:
delegate void MyDelegate(int x, int y = 5);
а затем вызывать его в любом месте любым методом, который соответствует сигнатуре.
Хорошо, у меня есть МНОГО методов, объявленных таким образом:
public Something FirstMethod(float val = 10, int skip = 0){ ... return sth; }
public Something SecondMethod(float val = 20, int skip = 0){ ... return sth; }
public Something ThirdMethod(float val = 5, int skip = 0){ ... return sth; }
... этот список идет вверх и вниз, так или иначе, у них у всех есть такая структура подписи. Дело в том, что все они имеют аргумент с плавающей запятой, который по умолчанию имеет другое значение.
Затем я хочу создать делегат, который будет указывать на один из этих методов:
delegate Something ProblematicDelegateType(<<WHAT WILL GO HERE>>);
ProblematicDelegateType myFunc;
if(someValue == someParameter){
myFunc = FirstMethod;
}else if(...){
myFunc = SecondMethod;
}else...
...
}
myFunc();
myFunc(skip:100);
Я хочу иметь возможность вызывать myFunc
как без параметров, так и с параметром skip
. В этой части кода первый параметр val
НЕ используется. (они используются в другом месте).
Что войдет в список аргументов делегата? Я хочу сохранить аргумент val
этого метода по умолчанию, каким бы он ни был.