Есть возможность делегировать события из экземпляра внутреннего объекта обработчикам событий другого объекта с помощью следующего синтаксиса:
public class MyControl {
public event EventHandler Finish;
private Wizard wizard;
public MyControl( Wizard wizard ) {
this.wizard = wizard;
// some other initialization going on here...
// THIS is what I want to do to chain events
this.wizard.Finish += Finish;
}
}
Мотивация для приведенной выше структуры заключается в том, что у меня есть много потоков, подобных мастерам, и я хотел разделить обработку Back, Forward & Cancel для одного класса, чтобы соблюдать принцип Open Closed принцип и принцип единой ответственности в моем проекте.
Добавление метода OnFinish и выполнение обычной проверки всегда возможны, но в случае большого количества вложенных событий это закончится большим количеством шаблонного кода.