0

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

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

最好的问候,
Terje

4

2 回答 2

0

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

/terje

于 2013-07-26T09:23:30.267 回答
0

我建议你这样做:

  1. 制作基类,它是环境的某种引导程序和构建器
  2. 把所有相同的东西放在所有文件上,除了细节
  3. 创建实现特定文档细节的具体类
  4. 在基类上使用 DI,以便在构建时注入公共引用
  5. 将接口用于特定类的特定引用,例如:

    void MyClass(IResource 资源);

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

于 2013-07-15T11:41:33.233 回答