Aperea.Commands.QueryDispatcher.GetHandler C# (CSharp) Метод

GetHandler() публичный Метод

public GetHandler ( IQueryCommand query ) : IQueryHandler
query IQueryCommand
Результат IQueryHandler
        public IQueryHandler GetHandler(IQueryCommand query)
        {
            var interfaces = query.GetType().GetInterfaces();
            foreach (var type in interfaces)
            {
                if (type.IsGenericType && typeof (IQueryCommand).IsAssignableFrom(type))
                {
                    var handlerType = typeof (IQueryHandler<,>).MakeGenericType(query.GetType(),
                        type.GetGenericArguments()[0]);
                    return (IQueryHandler) locator.GetInstance(handlerType);
                }
            }
            throw new InvalidOperationException("don't implement IQueryCommand directory, use IQueryCommand<T>");
        }