Autofac: Пакетная регистрация открытых универсальных типов

У меня есть сборка со многими конкретными типами, реализующими IHandler , например следующие:

public class MoveCustomerHandler : IHandler<MoveCustomerCommand>
{
    void IHandler<MoveCustomerCommand>.Handle(MoveCustomerCommand c)
    {
        // some business logic for moving a customer.
    }
}

В настоящее время я регистрирую их один за другим следующим образом :

builder.RegisterType<MoveCustomerHandler>()
    .As<IHandler<MoveCustomerCommand>>();

builder.RegisterType<ProcessOrderHandler>()
    .As<IHandler<ProcessOrderCommand>>();

builder.RegisterType<SomeOtherFancyHandler>()
    .As<IHandler<SomeOtherFancyCommand>>();

// Many handler registrations here...

Обработчики команд вводятся с помощью внедрения конструктора, как можно увидеть ниже:

public class OrderController
{
    private readonly IHandler<ProcessOrderCommand> handler;

    public OrderController(IHandler<ProcessOrderCommand> handler)
    {
        this.handler = handler;
    }
}

Есть ли способ пакетной регистрации всех моих обработчиков простым способом с помощью Autofac?

14
задан Steven 5 February 2019 в 22:12
поделиться