团结的“清单注射”?
-
20-08-2019 - |
题
我有一个项目即将到来,该项目将通过相同的界面连接到一个到许多后端系统;我们称之为ibacksideprovider。
我想在运行时使用Unity注入这些提供商。问题是,由于我们谈论的是1 ... n后端系统,我需要注册1 ... n的Ibackside -Provider实现。 Unity不支持这一点。
这篇博客文章 建议可以做到这一点。我想知道是否有人做到了这一点,或者有一个想法如何进行统一,以便能够做到这一点。 tia。
解决方案
有什么原因为什么这不起作用?http://msdn.microsoft.com/en-us/library/cc440943.aspx
要根据命名注册从容器中检索对象实例列表,请使用resolveall方法并指定对象类型(注册类型)的值。 Resolveall方法返回一个非默认(命名)注册类型的IEnumerable通用列表,您可以在代码中迭代以检查每个对象。
IEnumerable<IMyObject> objects = myContainer.ResolveAll<IMyObject>();
其他提示
Unity支持阵列注入1.2版,该版本于2008年11月发布,左右。这是您目前可以做的最好的,而无需诉诸于将统一容器注入到您的物体中。
linfu.ioc 支持IEnumerableu003CT>和iListu003CT>开箱即用的构造函数,属性,方法甚至字段的注入。 Afaik,这是该博客上为数不多的容器,实际上支持列表注射。
不隶属于 StackOverflow