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.