コード例 #1
0
ファイル: EventBusBase.cs プロジェクト: boydg123/dze
        /// <summary>
        /// 自动订阅所有事件数据及其处理类型
        /// </summary>
        /// <param name="eventHandlerTypes">事件处理器类型集合</param>
        public virtual void SubscribeAll(Type[] eventHandlerTypes)
        {
            Check.NotNull(eventHandlerTypes, nameof(eventHandlerTypes));

            foreach (Type eventHandlerType in eventHandlerTypes)
            {
                Type handlerInterface = eventHandlerType.GetInterface("IEventHandler`1"); //获取该类实现的泛型接口
                if (handlerInterface == null)
                {
                    continue;
                }
                Type eventDataType           = handlerInterface.GetGenericArguments()[0]; //泛型的EventData类型
                IEventHandlerFactory factory = new IocEventHandlerFactory(ServiceScopeFactory, eventHandlerType);
                EventStore.Add(eventDataType, factory);
                Logger.LogDebug($"创建事件“{eventDataType}”到处理器“{eventHandlerType}”的订阅配对");
            }
            Logger.LogInformation($"共从程序集创建了{eventHandlerTypes.Length}个事件处理器的事件订阅");
        }
コード例 #2
0
ファイル: EventBusBase.cs プロジェクト: Mr-Tommy/osharp-ns20
        /// <summary>
        /// 遍历程序集类型,自动订阅所有事件数据及其处理类型
        /// </summary>
        /// <param name="assembly">程序集</param>
        public virtual void SubscribeAll(Assembly assembly)
        {
            assembly.CheckNotNull("assembly");

            Type[] handlerTypes = assembly.GetTypes().Where(type => type.IsDeriveClassFrom(typeof(IEventHandler <>))).ToArray();
            if (handlerTypes.Length == 0)
            {
                return;
            }
            foreach (Type handlerType in handlerTypes)
            {
                Type handlerInterface = handlerType.GetInterface("IEventHandler`1"); //获取该类实现的泛型接口
                if (handlerInterface == null)
                {
                    continue;
                }
                Type eventType = handlerInterface.GetGenericArguments()[0]; //泛型的EventData类型
                IEventHandlerFactory factory = new IocEventHandlerFactory(handlerType);
                _EventStore.Add(eventType, factory);
            }
        }
コード例 #3
0
        /// <summary>
        /// 遍历程序集类型,自动订阅所有事件数据及其处理类型
        /// </summary>
        /// <param name="assembly">程序集</param>
        public virtual void SubscribeAll(Assembly assembly)
        {
            assembly.CheckNotNull("assembly");

            Type[] handlerTypes = assembly.GetTypes().Where(type => type.IsDeriveClassFrom(typeof(IEventHandler <>))).ToArray();
            if (handlerTypes.Length == 0)
            {
                return;
            }
            foreach (Type handlerType in handlerTypes)
            {
                Type handlerInterface = handlerType.GetInterface("IEventHandler`1"); //获取该类实现的泛型接口
                if (handlerInterface == null)
                {
                    continue;
                }
                Type eventType = handlerInterface.GetGenericArguments()[0]; //泛型的EventData类型
                IEventHandlerFactory factory = new IocEventHandlerFactory(handlerType);
                _EventStore.Add(eventType, factory);
                _Logger.LogDebug($"创建事件“{eventType}”到处理器“{handlerType}”的订阅配对");
            }
            _Logger.LogInformation($"程序集“{assembly.GetName().Name}”创建了{handlerTypes.Length}个处理器的事件订阅");
        }