public void AddMessageHandler(MessageHandlerMethodDispatcher messageHandler) { var messageType = messageHandler.HandledMessageType; if (!messageTypeToMessageHandlerDictionary.ContainsKey(messageType)) { messageTypeToMessageHandlerDictionary.Add(messageType, new List<MessageHandlerMethodDispatcher>()); } messageTypeToMessageHandlerDictionary[messageType].Add(messageHandler); }
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; }
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); }
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; }