Правильно - вам не нужно начинать с нуля. Delegate.Combine
возвращает новый делегат со списком вызовов первого аргумента, к которому добавлен список вызовов второго аргумента. Если один из аргументов равен нулю, он просто возвращает другой делегат, который вы передали.
Кроме того, вам не нужно использовать Combine
напрямую. Вы можете сделать это:
Feedback fbChain = method1;
fbChain += method2;
fbChain += method3;
или
fbChain = new Feedback(method1) + new Feedback(method2) + new Feedback(method3);
как +
для делегатов отображается на Combine
. Это также проверяется типом компилятором, вместо того, чтобы использовать Delegate.Combine (который завершится ошибкой только во время выполнения, если сигнатуры не совпадают)