【问题标题】:Will a DI-Container help this situationDI-Container 会帮助解决这种情况吗
【发布时间】:2023-04-08 17:05:01
【问题描述】:

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

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

最好的问候,
泰尔耶

【问题讨论】:

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


    【解决方案1】:

    我建议你这样做:

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

      void MyClass(IResource 资源);

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

    【讨论】:

    • 感谢您的意见。我不确定我是否完全理解你的建议,但它让我开始思考与最初不同的方向,我很感激。
    【解决方案2】:

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

    /terje

    【讨论】:

      猜你喜欢
      • 2011-08-24
      • 2011-08-15
      • 1970-01-01
      • 1970-01-01
      • 2011-04-19
      • 1970-01-01
      • 2020-03-02
      • 2011-04-26
      • 2018-09-17
      相关资源
      最近更新 更多