I am trying to create a Publish Subscribe facade that internally uses NServiceBus for the PubSub functionality. One of the issues I am having doing this with NServiceBus is that a lot of the configuration is done via interfaces. A Publisher will implement IWantToRunAtStartup, for instance. The endpoint for that publisher will implement IConfigureThisEndpoint and AsA_Publisher.
This is a very cool feature, is "fluent" and makes the code easy to read and understand.
But it makes it hard to create a facade. A base class which implements IWantToRunAtStartup, for instance, will require all super classes to reference NServiceBus.Host.
Having a requirement to reference NServiceBus, of course, totally breaks the idea of having the facade. What's the point of the facade at that point?
Does NServiceBus have a way of configuring types as endpoints, publishers, subscribers, and messages that does not use the Interface technique? And if so, could someone point me to that documentation (or, even better, a sample?)