【发布时间】:2008-11-20 00:09:33
【问题描述】:
我正在尝试在我的应用程序中使用 IoC 进行依赖注入的最佳方法,但是我有一个小问题。
我在 WPF 应用程序中使用 MVP 模式的松散实现。本质上,演示者类被实例化,视图和任务(例如 EmployeePresenter 的 IEmployeeView 和 IEmployeeTask)被注入到演示者中。
我想使用 IoC 容器(我正在尝试 Unity,但我想这也会发生在其他人身上,例如 ninject 或 Structure Map)而不是手动注入这些实例,但是如果创建了演示者(或在异步委托调用或事件线程(例如非 STA 线程)上从 IoC 容器解析,然后创建 WPF 窗口的新实例会引发以下异常:
当前的构建操作(构建密钥 构建密钥[命名空间.Window1, null]) failed:调用线程必须是 STA,因为很多 UI 组件 需要这个。
现在,我知道新窗口实例等需要是 STA,但是即使 UI 必须在 STA 线程上创建,是否也可以使用 IoC 容器进行依赖注入?
从这个问题来看,被解析的类/类型似乎是在解析时实例化的,而不是在其注册时...
【问题讨论】:
标签: wpf dependency-injection inversion-of-control sta