public void AddMessageHandler(MessageHandlerMethodDispatcher messageHandler)
 {
     var messageType = messageHandler.HandledMessageType;
     if (!messageTypeToMessageHandlerDictionary.ContainsKey(messageType))
     {
         messageTypeToMessageHandlerDictionary.Add(messageType, new List<MessageHandlerMethodDispatcher>());
     }
     messageTypeToMessageHandlerDictionary[messageType].Add(messageHandler);
 }
Example #2
0
        public void AddMessageHandler(MessageHandlerMethodDispatcher messageHandler)
        {
            var messageType = messageHandler.HandledMessageType;

            if (!messageTypeToMessageHandlerDictionary.ContainsKey(messageType))
            {
                messageTypeToMessageHandlerDictionary.Add(messageType, new List <MessageHandlerMethodDispatcher>());
            }
            messageTypeToMessageHandlerDictionary[messageType].Add(messageHandler);
        }
 private static object[] ResolveParameters(MessageHandlerMethodDispatcher handler, object message, IServiceLocator serviceLocator)
 {
     var parameters = new object[handler.ParameterTypes.Count];
     for (int i = 0; i < parameters.Length; i++)
     {
         var parameterType = handler.ParameterTypes[i];
         if (parameterType.IsAssignableFrom(message.GetType()))
         {
             parameters[i] = message; // shortcut for message, it's a known type
             continue;
         }
         parameters[i] = serviceLocator.Resolve(parameterType);
     }
     return parameters;
 }
Example #4
0
        private static object[] ResolveParameters(MessageHandlerMethodDispatcher handler, object message, IServiceLocator serviceLocator)
        {
            var parameters = new object[handler.ParameterTypes.Count];

            for (int i = 0; i < parameters.Length; i++)
            {
                var parameterType = handler.ParameterTypes[i];
                if (parameterType.IsAssignableFrom(message.GetType()))
                {
                    parameters[i] = message; // shortcut for message, it's a known type
                    continue;
                }
                parameters[i] = serviceLocator.Resolve(parameterType);
            }
            return(parameters);
        }
Example #5
0
        public void ScanAssembliesAndInitialize(IEnumerable <Assembly> assembliesToScan)
        {
            if (isInit)
            {
                return;
            }

            foreach (var method in FindAllMessageHandlerMethods(assembliesToScan))
            {
                var messageType = FindMessageTypeFromMethodParameters(method);
                var dispatcher  = new MessageHandlerMethodDispatcher(method, messageType);
                AddMessageHandler(dispatcher);
                logger.Debug("Associated '{0}' message with static method '{1}'", messageType, method);
            }

            this.isInit = true;
        }
        public void ScanAssembliesAndInitialize(IEnumerable<Assembly> assembliesToScan)
        {
            if (isInit)
            {
                return;
            }

            foreach (var method in FindAllMessageHandlerMethods(assembliesToScan))
            {
                var messageType = FindMessageTypeFromMethodParameters(method);
                var dispatcher = new MessageHandlerMethodDispatcher(method, messageType);
                AddMessageHandler(dispatcher);
                logger.Debug("Associated '{0}' message with static method '{1}'", messageType, method);
            }

            this.isInit = true;
        }