Пример #1
0
        private void RegisterServicesFromAssembly(Assembly assy)
        {
            Type[] types = assy.GetTypes();

            foreach (Type type in types)
            {
                MethodInfo[] methodInfos = type.GetMethods();

                foreach (MethodInfo method in methodInfos)
                {
                    ServiceAttribute attr = (ServiceAttribute)Attribute.GetCustomAttribute(method, typeof(ServiceAttribute));

                    if (attr != null)
                    {
                        Service service = new Service(attr.Request, attr.Response, method);
                        Logger.Instance.Debug("Registering request: " + attr.Request + " to service handler: " + method.Name + " with response: " + attr.Response);
                        try
                        {
                            this.RequestToServiceMap.Add(attr.Request, new List<Service>());
                            this.RequestToServiceMap[attr.Request].Add(service);
                        }
                        catch (ArgumentException)
                        {
                            // There's already another list of handlers for this request, so add the new service to that list
                            this.RequestToServiceMap[attr.Request].Add(service);
                        }
                    }
                }
            }
        }