Есть довольно простая архитектура (C#): 1 главный объект Kernel и несколько модулей, которые соединены с ним. Каждый модуль содержит методы и события (event). Генерация событий в одних модулях должна порождать вызов методов в других. Сигнатуры всех методов и событий различны. Сейчас все это взаимодействие реализовано в Kernel'е набором методов-подписчиков на сообщения. Как-то все это не эстетично. Существуют ли более симпатичные решения?
class ModuleN
{
public event EventHandler<Args1> Event1;
public event EventHandler<Args2> Event2;
public void Method1(...);
public void Method2(...);
}
... // Другие модули
class Kernel
{
private Module1 _module1;
private Module2 _module2;
private Module2 _module3;
public void Init()
{
_module1.Event1 += _module1_Event1;
...
}
private void _module1_Event1(object sender, Args1 args)
{
_module2.Method2(args);
_module3.Method1(args);
}
... // Остальные обработчики
}
... << RSDN@Home 1.2.0 alpha rev. 728>>