DI容器会帮助这种情况吗?

时间:2013-07-15 08:36:19

标签: wpf dependency-injection inversion-of-control

我正在编写各种文档编辑器。该应用程序是用WPF编写的,需要能够在同一个进程中处理多个文档。每个文档都有自己的编辑器窗口,其中有自己的功能区(有点像Word所做的那样)。

我想在应用程序中使用DI模式,所以f.ex.一个“SaveManager”类可以注入它应该保存的文档。显然,容器在应用程序启动时无法创建整个对象图,因为用户可能会选择稍后打开或创建新文档。处理这种情况的“正常”方法是使用抽象工厂,但这意味着我需要为文档上运行的每个类都有一个工厂。我期待很多课程需要对文档的引用,我不想仅仅为了DI而跳过篮球。有没有办法让容器管理文件的生命周期,在适当的时间分发正确的文档实例。

最好的问候,
泰耶

2 个答案:

答案 0 :(得分:0)

我建议你这样:

  1. 制作基础类,它是一些引导程序和环境构建器
  2. 在除特定内容之外的所有文档中放置相同的内容
  3. 创建实现特定文档细节的具体类
  4. 在基类上使用DI,以便在build up上注入常用引用
  5. 使用特定类的特定引用的接口,如:

    void MyClass(IResource资源);

  6. 从其他类继承该资源,然后在具体类上使用泛型或类型转换来解决它

答案 1 :(得分:0)

我最终做的是为每个文档创建一个子容器。这样我将每个文档窗口的解析分离到它自己的容器。

/泰耶