LightInject Определить тип разрешается?

Я смотрю на переход от Ninject к более легкому (и более быстрому) каркасу Ioc.

Я взял LightInject и у меня есть игра, но не могу найти, как сделать следующее:

Из вызова RegisterConstructorDependency я хочу определить тип разрешаемого объекта. Информация о параметрах дает мне все, что мне нужно знать о местоположении параметров. Но я не могу определить цель инъекции.

Это проблематично при попытке вставить строковые значения в конструкторы.

Пример:

public interface IService { void Go(); }

public class Impl1 : IService { 

  public Impl1(string needsA){ }

  public void Go(){ }

}

public class Impl2 : IService {

   public Impl1(string needsA, string needsB){ }

  public void Go(){ }

}

// Elsewhere
container.Register<IService, Impl1>();
container.Register<IService, Impl2>();
container.RegisterConstructorDependency<string>((factory, paramInfo) => ??? );

Как при регистрации конструктора arg я могу определить, какая реализация (Impl1 или Impl2) разрешается. Они могут нуждаться в разных значениях для передачи в "needsA".

Возможно, LightInject не может предоставить эту информацию, и мне нужно расширить поиск.

1 ответ

Я автор LightInject. Вы можете получить доступ к разрешаемому типу через paramInfo.Member.DeclaringType.

Другие вопросы по тегам