【问题标题】:Prism: New Project vs. New Module and Communication Between ModulesPrism:新项目与新模块以及模块之间的通信
【发布时间】:2013-12-17 14:34:07
【问题描述】:

我正在从事一个 Prism/WPF 项目,并且我已经有一个包含三个模块的框架,所有这些模块都实现了 MVVM 模式。每个模块都有自己的用户界面,用户可以在其中提供一些数据,然后可以将这些数据传送到服务器。 现在,我的问题是:Prism 应用程序中的模块是否仅引用用户界面的不同部分?我还可以创建一个模块来实现与服务器的通信,还是应该为此创建另一个项目? 假设与服务器的通信是在一个模块中实现的,我有一个名为 UserAccount 的类,所有其他具有用户界面的模块都需要访问它。 UserAccount 应该是服务器通信模块的一部分还是基础架构的一部分?

在我看来,我应该在一个模块中实现与服务器的通信,并且该模块应该包含像 UserAccount 这样的类,但是 Infrastructure 应该包含创建的 UserAccount 对象,以便可以从所有其他模块访问它。 这是一个正确的方法吗?

另外,您能否推荐任何处理此类问题的 prism 文档?

【问题讨论】:

    标签: c# wpf mvvm prism


    【解决方案1】:

    模块之间共享的所有类型都应该在一个单独的共享程序集中(基础架构为您服务?)。这包括接口定义和所有将携带信息的自定义类型。

    是的,您的服务器通信模块听起来很适合作为自己的模块,尤其是在服务器通信涉及共享资源的情况下。

    编辑 - 共享程序集

    • Assembly1:导入IMyServiceModule 的一个实例
    • Assembly2:实现 IMyServiceModule 并导出实例
    • Assembly3:共享程序集。定义IMyServiceModule 接口和支持类。由 Assembly1 和 Assembly2 引用

    为什么?允许模块松散耦合并避免循环引用。

    【讨论】:

    • “单独的共享程序集”到底是什么意思?假设我有一个类,并且来自一个模块 A 的 ViewModel 创建了该类的一个实例。来自模块 B 的 ViewModel 需要从模块 A 访问由 ViewModule 创建的对象。这应该如何发生?来自模块 B 的 ViewModel 应该直接从模块 A 的 ViewModel 访问它,还是应该间接完成(以及如何?)。
    猜你喜欢
    • 2013-06-15
    • 1970-01-01
    • 2012-01-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-06-07
    • 1970-01-01
    相关资源
    最近更新 更多