我正在考虑从 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 无法提供这些信息,我需要扩大搜索范围。