Пример #1
0
        public static void RegisterAssembly(Assembly assembly)
        {
            AssertUtil.ArgumentNotNull(assembly, nameof(assembly));

            if (loadedAssemblies.Contains(assembly))
            {
                return;
            }

            loadedAssemblies.Add(assembly);

            var interfaceType = typeof(IEventHandler);

            foreach (Type handlerType in assembly.GetTypes())
            {
                if (!interfaceType.IsAssignableFrom(handlerType))
                {
                    continue;
                }

                var attrs = handlerType.GetCustomAttributes(typeof(EventNameAttribute), false);
                if (attrs == null || attrs.Length == 0)
                {
                    continue;
                }

                var wrappedHandler = new WrappedHandler(handlerType);

                var eventNameAttr = attrs[0] as EventNameAttribute;
                foreach (string eventName in eventNameAttr.EventNames)
                {
                    EventCore.RegisterHandler(eventName, wrappedHandler);
                }
            }
        }
Пример #2
0
        public static void RegisterHandler(string eventName, WrappedHandler handler)
        {
            if (!HandlersByEvent.ContainsKey(eventName))
            {
                HandlersByEvent[eventName] = new List <WrappedHandler>();
            }

            HandlersByEvent[eventName].Add(handler);
            Log.Debug($"Register handler '{handler.Type}' for event '{eventName}'.");
        }