Local (In-Process) Publish/Subscribe
Don't think it's a good approach.


Singletons are evil by themselves  
Subscribers are likely to expect a specific type of message on specific channel
Magic strings that specify the channel name are also potential source of bugs
Incorrect messages or posts to wrong channels are detected at run-time only.
Logical dependency between objects still exist, but is hidden.


.NET already has a notion of in-process publish/subscribe, and (not that surprisingly) this functionality is covered by events... All you need to do is to wire up all your entities properly, and that's your actual challenge is.

I would recommend using any of available IoC frameworks for that (I use Autofac at the moment).


You will have a strictly-typed communication protocol between publisher and subscriber
It will allow you to explicitly declare dependency on a certain external functionality in your classes. 
It will simplify unit-testing of your classes


Unfortunately you haven't described specific use cases for your pub/sub requirement so it's hard to show this solution on specific example