我想从我所选择IoC容器库(统一)隔离我的所有代码。要做到这一点,我创建了公开注册()和决心()的接口的IContainer。我创建了一个名为UnityContainerAdapter类,它实现的IContainer和包装真正的容器。因此,只有其中UnityContainerAdapter定义组件知道的统一库。

我在我的隔离思想泄漏。对一个类型的成员属性统一搜索,知道在哪里可以注入的依赖关系。我所看到的大多数也是国际奥委会库支持。我的问题是,我想使用的功能,但我不希望我的班有统一特定属性的依赖。

你有没有关于如何解决这个问题有什么建议?

理想情况下我将创建自己的[依赖]属性,并使用该一个在我的代码。但我要告诉真正的容器我的属性,而不是它自己的搜索。

有帮助吗?

解决方案 2

我找到了答案:统一使用一个扩展来配置他们所谓的“选择策略”。以取代统一使用的属性,你只要编写自己的UnityDefaultStrategiesExtension类的版本并注册您自己的“选择策略”使用您自己的属性。

请参阅上的统一的CodePlex站点此篇了解细节上如何做到这一点。

我不知道,这将是容易的,如果我切换到另一个的IoC库做相同的,但认为解决我的问题,现在。

其他提示

查看公共服务定位器项目:

  

在普通的服务定位器库   包含用于共享接口   位置服务的应用程序和   框架开发人员可以参考一下。   该库提供了一个抽象   在IoC容器和服务   定位器。使用该库允许   应用间接访问   功能不依赖于硬   引用。希望的是,使用   这个库,第三方应用程序   和框架可以开始利用   不占用IOC /服务定位   自己下来到一个特定的   实施


编辑:这似乎没有解决您的使用依赖注入的基于属性的声明愿望。您可以选择不使用它,或找到一种方法,抽象的属性,以多次喷射库(比如你提到的)。

即用声明接口的基本问题 - 它们被设置到一个特定的实现。

就个人而言,我坚持构造函数注入,所以我就不会遇到这个问题。

Couldn't你刚才设置你的配置,而属性,在XML。这使得它更有点“不清楚”我知道,我个人使用XML和属性的组合,但至少是“解决”您的依赖团结的事情。

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