C# 基于泛型类型的autofac多重注册

C# 基于泛型类型的autofac多重注册,c#,generics,autofac,C#,Generics,Autofac,我有一个接收泛型类型的类: RequestHandler<T> RequestHandler 现在我想根据泛型类型在Autofac中多次注册这个类。 大概是这样的: builder.RegisterType<RequestHandler<Request1>>().As<RequestHandler<T>>(); builder.RegisterType<RequestHandler<Request2>>().

我有一个接收泛型类型的类:

RequestHandler<T>
RequestHandler
现在我想根据泛型类型在Autofac中多次注册这个类。 大概是这样的:

builder.RegisterType<RequestHandler<Request1>>().As<RequestHandler<T>>();
builder.RegisterType<RequestHandler<Request2>>().As<RequestHandler<T>>();
builder.RegisterType<RequestHandler<Request3>>().As<RequestHandler<T>>();
builder.RegisterType<RequestHandler<Request4>>().As<RequestHandler<T>>();
builder.RegisterGeneric(typeof(RequestHandler<>)).As(typeof(RequestHandler<>));
builder.RegisterType().As();
builder.RegisterType().As();
builder.RegisterType().As();
builder.RegisterType().As();
我知道语法不正确,但我希望你能理解


那么这可能吗?如果是这样的话,怎么做?

您可以使用
RegisterGeneric
映射打开的泛型类型,如下所示:

builder.RegisterType<RequestHandler<Request1>>().As<RequestHandler<T>>();
builder.RegisterType<RequestHandler<Request2>>().As<RequestHandler<T>>();
builder.RegisterType<RequestHandler<Request3>>().As<RequestHandler<T>>();
builder.RegisterType<RequestHandler<Request4>>().As<RequestHandler<T>>();
builder.RegisterGeneric(typeof(RequestHandler<>)).As(typeof(RequestHandler<>));
builder.RegisterGeneric(typeof(RequestHandler)).As(typeof(RequestHandler));