public List<HandlerInfo> FindEventHandlersInAssemblies(IMessage message)
{
var result = new List<HandlerInfo>();
var methods = FindMethodsInAssemblyFromTypes(type => ((!type.IsInterface && !type.IsAbstract) &&
(type.GetInterfaces().SingleOrDefault(
x => IsEventHandler(x, message.GetType())) != null)), "Handle", type => new[] { message.GetType() });
foreach (var methodInfo in methods)
{
var declaringType = methodInfo.DeclaringType;
var staticAttribute = declaringType.GetCustomAttributes(typeof(StaticHandlerAttribute), true).SingleOrDefault();
result.Add(new HandlerInfo(methodInfo, staticAttribute != null));
}
return result;
}