예제 #1
0
 public static void Subscriber(IDelayMessageSubscriber delayMessageSubscriber, params object[] delayMessageHandlers)
 {
     foreach (var delayMessageHanlder in delayMessageHandlers)
     {
         Subscriber(delayMessageSubscriber, delayMessageHanlder);
     }
 }
예제 #2
0
        static void Subscriber(IDelayMessageSubscriber delayMessageSubscriber, object delayMessageHandler)
        {
            var handlerTypes = delayMessageHandler.GetType().GetInterfaces()
                               .Where(m => m.IsGenericType && m.GetGenericTypeDefinition() == typeof(IDelayMessageHandler <>));

            if (handlerTypes != null && handlerTypes.Count() > 0)
            {
                var subscribeMethod = typeof(IDelayMessageSubscriber).GetMethod("SubscribeAsync");
                foreach (var handlerType in handlerTypes)
                {
                    var delayMessageType = handlerType.GetGenericArguments();
                    var task             = (Task)subscribeMethod.MakeGenericMethod(delayMessageType).Invoke(delayMessageSubscriber, new object[] { delayMessageHandler });
                    task.Wait();
                }
            }
        }
예제 #3
0
        public static void Subscriber(ICommandSubscriber commandSubscriber, IEventSubscriber eventSubscriber, IDelayMessageSubscriber delayMessageSubscriber, params object[] handlers)
        {
            foreach (var eventHanlder in handlers)
            {
                Subscriber(eventSubscriber, eventHanlder);
            }

            foreach (var commandHandler in handlers)
            {
                Subscriber(commandSubscriber, commandHandler);
            }

            foreach (var handler in handlers)
            {
                Subscriber(delayMessageSubscriber, handler);
            }
        }