c# - WPF MVVM 和数据访问层组织
问题描述
我已经开发了我的第一个 WPF 应用程序 (tryingt) 来使用 MVVM。我仍在学习,希望能回答以下问题:
我应该将 TestReportItem 类保留在 Repository 类库中还是将其移动到它自己的类库中?
我的 ViewModel 没有引用模型。它引用类TestReportItem。我使用 XAML 和数据模板显示 TestReportItem 以访问字符串字段“标题”。这是可接受的/最佳实践吗?
测试报告项
public class TestReportItem
{
public string Title { get; set; } = string.Empty;
public string SubTitle { get; set; } = string.Empty;
public bool HasTable { get; set; }
public string Reference { get; set; } = string.Empty;
public bool HasAdditionalInformation { get; set; }
}
测试报告项目存储库
public interface ITestReportItemRepository
{
List<TestReportItem> GetAllTestReportItems();
TestReportItem GetByName(string testName);
}
XMLTestReportItemRepository
public class XMLTestReportTestStandardRepository : ITestReportItemRepository
{
private string _filePath;
public string FilePath
{
get { return _filePath; }
set { _filePath = value; }
}
public XMLTestReportTestStandardRepository(string sourceFilePath)
{
FilePath = sourceFilePath;
}
public TestReportItem GetByName(string testName)
{ ... }
public List<TestReportItem> GetAllTestReportItems()
{ ... }
解决方案
MVVM 是经验法则而不是教条;意味着它非常灵活。最初 MVVM 是基于三层数据组织系统。视图/业务层/数据库层。从某种意义上说,就是这样。
我应该将 TestReportItem 类保留在 Repository 类库中还是将其移动到它自己的类库中?
您的类是驻留在主项目中还是在外部类库中取决于设计。如果设计要求在不同项目之间重用,那么可以提取它。否则,除了工作分离之外,作为外部人员不会增加任何价值。
请记住,外部库在某种意义上是用于构建代码的不同名称空间。
我的 ViewModel 没有引用模型。它引用类TestReportItem。
至于TestReportItem
它是一个模型。仅仅因为它有/可能有方法和操作是没有实际意义的。如果需要创建部分类文件,其中模型类属性包含在一个部分中,而操作等都在另一个部分中,则可以实现分离。但这是可选的
访问字符串字段“标题”的数据模板。这是可接受的/最佳实践吗?
是否Title
通过其在类中得到派生或生成。如果是,那么是的,如果不是,则放置Title
在主 VM 上并将其提取/构建在Title
.
推荐阅读
- reactjs - 情感 css 功能未呈现样式(React)
- python - 求解一对迭代微分方程
- dart - 为什么 Dart 只允许在初始化列表上启动 Final 变量?
- php - 删除 WooCommerce 订单上的美分(四舍五入到最接近的美元)
- javascript - GetJSON 方法仅拉取数组而不拉取特定字段
- javascript - JSON 对象 - JavaScript、C#、MVC
- javascript - html2pdf:如何隐藏从PDF?
- android - Xamarin 使用 inflater 内部循环动态添加视图,仅添加一个条目
- java - 如何集成 loopj 以进行 json 解析
- signalr - 在打开应用洞察时连接到我的 SignalR Web 应用时出现 502 错误网关