public MessageRouter(List <MessagePipeline> messagePipelines, MessagePipeline unhandledEventPipeline) { foreach (var pipeline in messagePipelines) { foreach (var messageType in pipeline.HandledMessageTypes) { if (_routingDictionary.TryGetValue(messageType, out var existingPipelinesForMessageType)) { existingPipelinesForMessageType.Add(pipeline); } else { var newPipelinesForMessageType = new List <MessagePipeline>(); newPipelinesForMessageType.Add(pipeline); _routingDictionary.Add(messageType, newPipelinesForMessageType); } } } _unhandledEventPipeline = unhandledEventPipeline; }