Я пытаюсь переписать некоторый код в .Net Core с помощью встроенного .Net Dependency Injection.Ранее я использовал текущий код для создания экземпляра (он использовал Unity для DI), который отлично работал.
var instance = (IPipe)UnityHelper.Container.Resolve(implementation);
Для .Net Core я сначала попробовал стандарт Activator.CreateInstance
, и это работало нормально исоздал экземпляр IPipe, который я ожидал.
var instance = (IPipe)Activator.CreateInstance(implementation)
Однако.Тогда возникает проблема: если реализации внедряют службы в ctor, они не будут решены (вот почему я использовал Unity.Resolve в предыдущем проекте, чтобы обойти это).
После некоторогоВ ходе исследования я узнал о классе ActivatorUtilities
и поменял его на приведенный ниже код (serviceProvider IServiceProvider
)
var instance = ActivatorUtilities.CreateInstance<IPipe>(serviceProvider, implementation);
Однако сейчас я получаю текущую ошибку.
Не удалось найти подходящий конструктор для типа «IPipe».Убедитесь, что тип конкретный, а службы зарегистрированы для всех параметров общедоступного конструктора.
Я не понимаю, почему Activator.CreateInstance
работает нормально, но это жалуется на конструктор IPipe?