This is a fork from courier. Forked it to extend the functionality to support passing different parameters types to the same message. I also removed some silverlight and wp7 I wasn't going to use. The documentation is work in progress.
You can find the original Courier in here -> https://github.com/Foovanadil/Courier.
//Call the MediatorFactory to get a Mediator Singleton
var mediator = MediatorFactory.GetMediator();
//Register instance method(only instance methods allowed at the moment) to message types, the message type is defined by the string.
//You can include a parameter type. Only one parameter is allowed.
//Message will be received by all compatible listeners. Listeners without parameters will receive parameterized broadcasts without the
//parameters. Listeners where parameter type is the parent type of the broadcast will also receive the message.
mediator.RegisterForMessage("Message", instance.MethodWithoutParameter);
mediator.RegisterForMessage<string>("Message", instance.MethodWithStringParameter);
mediator.RegisterForMessage<object>("Message", instance.MethodWithObjectParameter);
//Send only to non parameterized method
mediator.BroadcastMessage("Message");
//Send to all methods
mediator.BroadcastMessage("Message", "Hello World!");
//Send to non parameterized method and to object method.
mediator.BroadcastMessage("Message", new object());