Одна вещь, которую я добился успеха, - это создание в приложении облегченной системы обработки событий публикации / подписки. Это было в .net 1.1, и я не уверен, как это изменится с генериками. По сути, у нас был синглтон, который содержал хеш-таблицу со строковым ключом и многоадресные delgates.
Синглтон имел такие методы, как RegisterForEvent (строковый ключ, обработчик делегата), RaiseEvent (ключ, данные) и т. Д. *
Затем мы определили стандартный делегат и сказали, что все пользователи должны реализовать этот шаблон, например, наши обработчики должны быть: метод void (отправитель объекта, аргументы CustomEventArgs). Издатели будут определять свой собственный производный класс CustomEventArgs.
Приятно то, что это позволило построить полностью отделенную систему. У нас было много сборок, и у нас не было никаких проблем, просто нужно убедиться, что ваши eventargs определены, где другие подпрограммы могут их получить.
У нас были так называемые разные подсистемы, например, у нас была подсистема, которая контролировала интернет-соединение, и когда оно вызывало событие, пользовательский интерфейс менялся, указывая состояние их соединения, у нас также была служба очередей, которая отправляла сообщения сервер, когда он увидел, что соединение оборвалось, мы прекратили публиковать.
Недостатком является то, что он очень слаб, по крайней мере, наша реализация была, но есть способы улучшить это.