Autofac: Batch registration of open-generic types

I got an assembly with many concrete types that implement IHandler<TCommand>, such as the following:

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

Currently, I'm registering them one by one as follows:




// Many handler registrations here...

The command handlers are injected using constructor injection, as can be seen below:

public class OrderController
    private readonly IHandler<ProcessOrderCommand> handler;

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

Is there a way to batch register all my handlers in an easy way using Autofac?


In a similar style to Jim's answer but taking advantage of AsClosedTypesOf:

Assembly[] assemblies = GetYourAssemblies();


You probably want something like this, although I'm not sure how IsAssignable() behaves with open generics.

Assembly[] assemblies = GetYourAssemblies();

    .Where(t => t.IsAssignableFrom(typeof(IHandler<>)))

Need Your Help

Django South Error: AttributeError: 'DateTimeField' object has no attribute 'model'`

python django postgresql django-models django-south

So I'm trying to migrate a table by adding two columns to it. A startDate and an endDate. Using south for Django, this should be a simple migrate. I have loads of other tables with dateTimes in the...

Java - JDBC alternatives

java jdbc

this is just theoretical question.