gpt4 book ai didi

c# - 从域模型:MVVM创建 View 模型

转载 作者:行者123 更新时间:2023-12-03 10:43:06 24 4
gpt4 key购买 nike

我来自Java背景。从3周开始对REST Web服务进行编码。我已经阅读了很多有关Web API的MVVM设计模式的信息。每个博客和每个stackoverflow问题都说明View Model也是一个映射前端/客户端的模型。但是,他们并没有谈论将Domain模型与 View 模型映射。

我试图了解使用 View 模型映射域模型。请花时间详细解释。

查看:

示例 View 如下所示

{
"userid":"nvkjnvn",
"applicationid":"kjcnasdkjcnknc",
"settingkey":"mykey",
"settingvalue":"30",
"setting label":"mylabel",
"isactive":"yes",
"updatedon":"2017-06-22"
}

模型类别:
public class Setting
{
public string settingid { get; set; }
public string settingkey { get; set; }
public string settingValue { get; set; }
public string isActive { get; set; }
public string updatedOn { get; set; }
}

public class Application
{
public string app_id { get; set; }
public string name { get; set; }
public List<Setting> settings { get; set; }
}

public class UserSetting
{
public string userid { get; set; }
public List<Application> applications { get; set; }
}

模型 View :
public class UserSettingModelView
{
public string UserID{get; set;}
public string ApplicationID{get; set;}
public string SettingKey{get; set;}
public string SettingValue{get; set;}
public string Group{get; set;}
public string SettingLabel{get; set;}
public bool IsActive{get; set;}
public Date UpdatedOn{get; set;}
}

如何使用领域模型映射模型 View 。

最佳答案

这应该只是将属性从多个域类映射到一个 View 模型类。提出以下问题:Should I transform Entity (Persistent) objects to DTO objects?

在这种情况下,AutoMapper是很好的工具。您的属性名称不完全匹配,因此您可能需要在AutoMapper中进行许多配置。

另一种选择是手动映射实例。

userSettingModelView.UserID = userSetting.userid;
userSettingModelView.ApplicationID = application.app_id;
userSettingModelView.SettingKey = ...........
userSettingModelView.SettingValue = ...........
userSettingModelView.Group = ...........
userSettingModelView.SettingLabel = ...........
userSettingModelView.IsActive = ...........
userSettingModelView.UpdatedOn = ...........

关于c# - 从域模型:MVVM创建 View 模型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44736429/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com