【发布时间】:2011-04-05 10:23:03
【问题描述】:
我在我目前正在进行的两个项目中使用依赖注入技术。
我使用 Unity 作为我的 IoC 框架。
我正在使用一个名为 ComponentBuilder 的类,它负责创建应用程序对象及其事件订阅,作为应用程序初始化的一部分。
一旦应用程序运行,所有对象都准备就绪,数据从一个对象传递到另一个对象。
我的问题是:
有些对象是在初始化后动态创建的,这些对象需要其他已经存在的对象。
由于 ComponentBuilder 已经完成了它的部分,我需要找到一种将所需对象传递给这些“动态”对象的方法。这些动态对象实际上是在运行时创建的对象的层次结构,层次结构中最深的对象需要一个来自层次结构顶部的组件(对象)。
我想到了两种可能的解决方案(我都不喜欢它们):
将所有对象的容器从 ComponentBuilder 传递给动态对象,以便它们可以使用和订阅所需的对象。此选项的主要缺点是公开所有可以隐藏对象之间依赖关系的对象。我看到有些人将对象容器传递给所有对象,就好像它是记录器或显示器一样,我认为这是错误的,并且隐藏了我们想要暴露给其他对象的依赖项。
将所需的对象传递给在初始化时创建的第一个对象,以便稍后它将对象层次结构向下传递给动态对象。此选项的主要缺点是层次结构中的某些对象不需要这些对象。
你能想出更好的解决方案吗?
【问题讨论】:
-
感谢 Mark,相关人员确实提供了帮助,并向我展示了解决其他相关问题的方法。有时你只需要知道你在搜索什么......
标签: c# dependency-injection unity-container ioc-container