public void Subscribe <TDerivedMessage>(Consumes <TDerivedMessage> handler) where TDerivedMessage : TBaseMessage { Multiplexor <TBaseMessage> handlers; if (!_subscriptions.TryGetValue(typeof(TDerivedMessage), out handlers)) { handlers = new Multiplexor <TBaseMessage>(); _subscriptions.Add(typeof(TDerivedMessage), handlers); } handlers.AttachConsumer(new NarrowingConsumer <TBaseMessage, TDerivedMessage>(handler)); }
public static Produces <T> AcceptingMany <T>(this Produces <T> produces) where T : Message { if (produces == null) { throw new ArgumentNullException("produces"); } var multi = new Multiplexor <T>(); produces.AttachConsumer(multi); return(multi); }