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);
}
}
}
}
}