One thing that I was successful was to create an easy system for registering publications / signatures in the application. This was in .net 1.1 and was not sure how this would change with generics. Essentially, we had a singleton that contained a hash table with a string key and multi-sheeted delegates.
In singleton there were methods such as RegisterForEvent (string key, delegate handler), RaiseEvent (key, data), etc.
Then we defined the standard delegate and said that all users should implement this template, for example, our handlers should have been: void method (object sender, CustomEventArgs args). Publishers would define their own derived class CustomEventArgs.
It's nice that this allowed to completely isolate the system. We had many builds and I had no problems, just need to make sure your eventargs are defined where other submasters can be accessed.
We had what we called different subsystems, for example, we had one that controlled the Internet connection, and when he raised the event, the user interface changed to indicate the status of their connection, we also had a queue service that sent messages to the server, when he saw that the connection was disconnected, we stopped publishing.
The disadvantage is that it is very closely associated with at least our implementation, but there are ways to improve this.
source share