我有一个项目即将到来,该项目将通过相同的界面连接到一个到许多后端系统;我们称之为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,这是该博客上为数不多的容器,实际上支持列表注射。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top