Я пытаюсь зарегистрировать тип Open Generi c в своем приложении, но у меня странное поведение.
Следующее работает правильно:
services.AddTransient(typeof(IA<>), typeof(A<>));
Сейчас Я хотел бы передать параметры в мой A
класс, потому что у моего конструктора есть несколько аргументов:
services.AddTransient(typeof(IA<>), provider =>
{
return ActivatorUtilities.CreateInstance(provider, typeof(A<>), "1", "2");
});
Это генерирует исключение
'Open generi c service тип 'IA`1 [T]' требует регистрации открытого типа реализации generi c. (Параметр 'descriptors') '
Хорошо, поэтому я упростил свою фабрику и просто сделал что-то вроде этого:
services.AddTransient(typeof(IA<>), provider => typeof(A<>));
Но это создает точно такое же исключение.
Вопрос прост: как зарегистрировать Open Generi c с параметрами по умолчанию. net core DI? (Я не хочу использовать стороннюю библиотеку, такую как Castle Windsor)
Обратите внимание, что конструктор A<>
имеет необязательный параметр, поэтому services.AddTransient(typeof(IA<>), typeof(A<>));
работает