У меня есть класс, который получает общий тип:
RequestHandler<T>
Теперь я хочу зарегистрировать этот класс в 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>>();
Я знаю, что синтаксис неверен, но я надеюсь, что вы поняли эту идею.
так это возможно? если да, то как?
Вы можете использовать RegisterGeneric
для отображения открытых общих типов следующим образом:
builder.RegisterGeneric(typeof(RequestHandler<>)).As(typeof(RequestHandler<>));