/// <summary>
        /// Creates new websocket connector and registers IWebSocketBus to the MSDI container.
        /// </summary>
        public static IServiceCollection AddWebSocketClient <TIdentifer>(this IServiceCollection services, Action <HorseWebSocketBuilder> config)
        {
            HorseWebSocketBuilder <TIdentifer> builder = new HorseWebSocketBuilder <TIdentifer>();

            config(builder);

            WebSocketModelConnector <TIdentifer> connector = (WebSocketModelConnector <TIdentifer>)builder.Build();

            AddMSDIHandlers(services, connector, builder);
            services.AddSingleton(connector);
            services.AddSingleton <IWebSocketBus <TIdentifer> >(connector);

            return(services);
        }
        private static void AddMSDIHandlers(IServiceCollection services, WebSocketModelConnector connector, HorseWebSocketBuilder builder)
        {
            foreach (Tuple <ServiceLifetime, Type> pair in builder.AssembyConsumers)
            {
                List <Type> types = connector.Observer.ResolveWebSocketHandlerTypes(pair.Item2);
                foreach (Type type in types)
                {
                    AddHandlerIntoMSDI(services, pair.Item1, type);
                }
            }

            foreach (Tuple <ServiceLifetime, Type, Type> tuple in builder.IndividualConsumers)
            {
                AddHandlerIntoMSDI(services, tuple.Item1, tuple.Item2);
            }
        }