1

我有一个项目即将到来,将涉及通过相同的接口连接到一个到多个后端系统;我们称之为IBacksideProvider。“列表注入”在Unity?

我想使用Unity在运行时注入这些提供程序。问题是,因为我们正在讨论1 ... n后端系统,所以我需要注册1 ... n个IBacksideProvider的实现。 Unity不支持这种方式。

This blog post表明它可以完成,但是。我想知道是否有人这样做或有一个想法如何去工作统一,以便能够做到这一点。 TIA。

+0

这个答案可能有帮助:http://stackoverflow.com/a/6317570/928531 – 2013-08-21 10:59:51

回答

2

任何原因,这将无法正常工作? http://msdn.microsoft.com/en-us/library/cc440943.aspx

要从基于命名注册的容器中检索对象实例的列表,可使用ResolveAll方法,并指定该对象类型(注册类型)的值。 ResolveAll方法返回一个IEnumerable的非默认(已命名)注册类型的通用列表,您可以在代码中遍历以检查每个对象。

IEnumerable<IMyObject> objects = myContainer.ResolveAll<IMyObject>(); 
+0

我必须检查一下...... – Will 2008-12-09 16:50:07

0

LinFu.IOC支持的IEnumerable <Ť>和IList的<Ť>注射构造函数,属性,方法,和偶数场,所有的权利开箱。 AFAIK,它是该博客上实际支持列表注入的极少数容器之一。

1

Unity支持从1.2版开始的阵列注入,该版本于2008年11月发布,等等。这是您目前可以做的最好的,而不是将统一容器注入您的物体。