c# - MVVM 分离程序集 Visual Studio : What should I choose as the project types?

标签 c# wpf mvvm visual-studio-2015 prism

我看到的许多教程都有 view/viewmodel/model 文件夹。

如果我要使用 Visual Studio 项目将其中的每一个分成单独的程序集,我将为每个部分选择哪些项目类型?

我计划使用来自 NuGet 和 XAML 的 Prism 6。

这是我的初步感受:

  • 应用程序:WPF 应用程序
  • View :WPF 用户控件库
  • ViewModel:类库
  • 模型:类库

或者, View 应该存在于更高级别的 WPF 应用程序中吗?

最佳答案

我曾作为承包商和全职人员广泛参与过许多不同的 MVVM 项目,我认为这取决于您的开发周期的性质。如果您有一个严格遵守 TDD(比方说)的程序员团队以及一个使用 Blend 的独立设计师团队,那么您提供的示例是合理的。然而,在大多数项目中,我看到程序员负责几乎所有事情,包括手动编写 XAML,在这些情况下,按应用程序系统而不是按层对解决方案和文件夹进行分组要容易得多。您的大部分时间可能会花在编写 View 和 View 模型代码上,并且当您编辑其中一个时,您几乎总是会更改另一个,因此将它们放在附近会为您省去很多麻烦,尤其是作为您的应用程序成长。

这些东西没有千篇一律的,但我倾向于做一些与此大致相似的事情:

  • MyApp(包含应用程序类和少量其他内容)。
  • MyApp.Controls(包含非特定于应用程序的自定义控件,通常在 WPF 应用程序中不需要)。
  • MyApp.Domain(DDD、ORM、业务逻辑等的实体。很多人认为这应该进一步拆分到数据层。)
  • MyApp.Localization(由于命名空间的技术原因,必须在其自己的程序集中)
  • MyApp.Net(负责在全栈开发期间与其他应用程序通信,即服务器、客户端、管理 websockets 等)。
  • MyApp.Settings(我通常需要添加大量的用户自定义)
  • MyApp.UnitTests(不言自明,对 TDD 尤其重要)。
  • MyApp.WinUI( View 和 View 模型)。

除此之外,还有用于第 3 方库(MVVM 对话框、主题等)的各种其他项目以及用于数据库维护的各种控制台和/或 Windows 实用程序。

这都是专门针对 Windows 应用程序的,非 Windows 解决方案也往往被添加到系统的独立 MVC 和 WCF 组件中,但那是另一篇文章了! :)

关于c# - MVVM 分离程序集 Visual Studio : What should I choose as the project types?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33072682/

相关文章:

c# - 窗口和任务栏的不同图标

wpf - ViewModel 处理事件

c# - WPF mvvm 信使析构函数

c# - 有没有办法强制 WebAPI 严格遵守已发布的接口(interface)?

c# - 带有 MySql 的 BackgroundWorker 无法正常工作

c# - 如何在 C# 中更改动态对象的属性值?

c# - AutoMapper 从子级获取属性

wpf - 在 WPF 中将 DataContext 传递给用户控件

wpf - MVVM Light DataGrid 绑定(bind)

Android bindingadapter不更新值