【发布时间】:2012-02-15 12:20:20
【问题描述】:
我刚刚开始使用 Unity(用于依赖注入),并且我已经设法让它在 MVC 和 WCF 上完美运行。一切都在接口中提取出来,并且使用构造函数注入,所有对象都是在我在应用程序入口点在容器中设置的链中创建的。
我现在的问题是我有一个 WPF 应用程序。我正在尝试做类似的事情,它适用于大多数事情,但我有一种情况我不能 100% 确定如何处理以正确使用 DI。
比如说,我的 WPF 应用程序解析 A 类,它通过构造函数注入接收 B、C 类等的接口。现在说,这些对象在应用程序的整个生命周期中都存在。现在在运行时的某个时刻,B 类需要动态创建 D 类的新版本以在其自己的线程中运行。如何正确地做到这一点?
我能想到的唯一方法是,类A也接受一个新的接口E,而这个类所做的只是创建类D,并在需要时将其作为接口D返回。
但这似乎更像是一种工厂模式,而不是 DI。
为了给出一些上下文,假设应用程序在应用程序的最高级别注入解析所需的业务逻辑类和存储库类。现在在运行时的某个时刻,它需要在自己的线程上生成一个新的存储库对象,以做一些非常具体的事情。这可能是一个线程,也可能是多个线程,具体取决于程序正在执行的操作。
我的建议是通过 DI 注入一个创建类,该类将实现 GetNewRepositoryObjectOnNewThread() 或类似的接口方法,具体实现基本上是存储库的硬编码实现。
有什么想法吗?我知道有很多文字需要通读!
【问题讨论】:
标签: dependency-injection unity-container