gpt4 book ai didi

unity-container - 如何隐藏真正的 IoC 容器库?

转载 作者:行者123 更新时间:2023-12-05 00:08:53 30 4
gpt4 key购买 nike

我想将我的所有代码与我选择的 IoC 容器库(Unity)隔离开来。为此,我创建了一个公开 Register() 和 Resolve() 的 IContainer 接口(interface)。我创建了一个名为 UnityContainerAdapter 的类,它实现了 IContainer 并包装了真实的容器。所以只有定义了 UnityContainerAdapter 的程序集才知道 Unity 库。

我的孤立思想有漏洞。 Unity 搜索类型成员的属性以了解在何处注入(inject)依赖项。我见过的大多数 IoC 库也支持这一点。我遇到的问题是我想使用该功能,但我不希望我的类依赖于 Unity 特定属性。

您对如何解决此问题有任何建议吗?

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

最佳答案

查看 Common Service Locator项目:

The Common Service Locator library contains a shared interface for service location which application and framework developers can reference. The library provides an abstraction over IoC containers and service locators. Using the library allows an application to indirectly access the capabilities without relying on hard references. The hope is that using this library, third-party applications and frameworks can begin to leverage IoC/Service Location without tying themselves down to a specific implementation.



编辑:这似乎不能解决您使用基于属性的依赖注入(inject)声明的愿望。您可以选择不使用它,也可以找到一种方法将属性抽象到多个注入(inject)库(就像您提到的那样)。

这是声明式接口(interface)的基本问题——它们与特定的实现相关联。

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

关于unity-container - 如何隐藏真正的 IoC 容器库?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1059267/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com