То, что вы описываете, выглядит как шаблон Mediator , в котором объекты обмениваются сообщениями.Эти сообщения могут быть реализованы как события, обратные вызовы или любой другой механизм.
Вы можете использовать реализацию типа MVVM Light * Messenger
(эта платформа предназначена для использования с WPFи Silverlight, но вы можете получить код для этого конкретного класса и использовать его в WinForms)
// Register for a specific message type
Messenger.Default.Register<TypeOfTheMessage>(this, DoSomething);
...
// Called when someone sends a message of type TypeOfTheMessage
private void DoSomething(TypeOfTheMessage message)
{
// ...
}
// Send a message to all objects registered for this type of message
Messenger.Default.Send(new TypeOfTheMessage(...));
Большим преимуществом класса Messenger
перед статическим событием является то, что он использует слабые ссылки, поэтомуне предотвращает сбор мусора для подписанных объектов, что снижает риск утечек памяти.
См. эту ссылку для получения подробной информации о Messenger
классе