有没有一种方法可以使用 [simple-injector] 注册由多个具体类实现的单个接口,而不使用模板接口?
说我们有 2 节课MyClass1
and Myclass2
这两个类都在实现IInterface1
现在使用 [simple-injector] 我们无法做到这一点
container.Register<IInterface1, Myclass1>();
container.Register<IInterface1, Myclass2>();
在现有代码库上将现有接口转换为模板接口是一项艰巨的工作。希望那里有一些更容易的。
您可以使用以下方法注册同一接口的多个实现RegisterCollection
方法(参见文档 https://simpleinjector.readthedocs.org/en/latest/using.html:配置要返回的实例集合)
所以你需要写:
container.Collection.Register<IInterface1>(typeof(Myclass1), typeof(Myclass2));
现在 Simple Injector 可以注入一组Interface1
实现到你的构造函数中,例如:
public class Foo
{
public Foo(IEnumerable<IInterface1> interfaces)
{
//...
}
}
或者您可以明确解决您的问题IInterface1
实现与GetAllInstances
:
var myClasses = container.GetAllInstances<IInterface1>();
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)