我正在尝试在我的应用程序中使用 IoC 进行依赖注入的最佳方式,但是我有一个小问题。
我在 WPF 应用程序中使用 MVP 模式的松散实现。本质上,演示者类被实例化,视图和任务(例如 EmployeePresenter 的 IEmployeeView 和 IEmployeeTask)被注入到演示者中。
我想使用 IoC 容器(我正在尝试 Unity,尽管我猜这也会发生在其他人身上,例如 ninject 或 Structure Map)而不是手动注入这些实例,但是如果演示者是创建的(或从IoC 容器)在异步委托调用或事件线程(例如非 STA 线程)上创建 WPF 窗口的新实例会引发以下异常:
当前构建操作(构建键 Build Key[ namespace .Window1, null])失败:调用线程必须是 STA,因为许多 UI 组件都需要这个。
现在,我知道新窗口实例等需要是 STA,但是即使必须在 STA 线程上创建 UI,是否可以使用 IoC 容器进行依赖注入?
从这个问题来看,被解析的类/类型似乎是在解析时实例化的,而不是在其注册时...