コード例 #1
0
        /// <summary>
        /// Creates the specified assemblies.
        /// </summary>
        /// <param name="assemblies">The assemblies.</param>
        /// <returns></returns>
        public HandlerRepository Create(IEnumerable <string> assemblies)
        {
            var handlerRepository = new HandlerRepository();

            foreach (var assemblyName in assemblies)
            {
                var assembly = Assembly.LoadFrom(string.Format(@"{0}/{1}", AppDomain.CurrentDomain.BaseDirectory, assemblyName));

                foreach (var type in assembly.GetTypes())
                {
                    var customAttributes = type.GetCustomAttributes(typeof(DynamicHandlerAttribute), true);
                    if (customAttributes.Length == 0)
                    {
                        var messageType = IsMessageHandler(type);
                        if (messageType != null)
                        {
                            _contextManager.AddComponent(type);
                            handlerRepository.AddHandler(messageType, type);
                        }
                    }
                    else
                    {
                        var dynamicHandler = (DynamicHandlerAttribute)customAttributes[0];
                        var dictionary     = HandlerCreatorInstance.Instance.CreateFrom(type, dynamicHandler.BaseType);
                        foreach (var dynHandler in dictionary)
                        {
                            _contextManager.AddComponent(dynHandler.Value);
                            handlerRepository.AddHandler(dynHandler.Key, dynHandler.Value);
                        }
                    }
                }
            }

            return(handlerRepository);
        }