gpt4 book ai didi

c# - 如何在 AutoMapper 中为同一类型调用不同的映射策略?

转载 作者:太空宇宙 更新时间:2023-11-03 14:13:52 26 4
gpt4 key购买 nike

我有一个客户类别,我希望在管理 ListView 中以 CSV 格式显示客户电子邮件字段。当显示编辑 View 时,我想让 View 在文本框中显示电子邮件,并使用换行符提要。

我不想为每个 View 设置 2 个不同的类,只使用相同的类,第一个使用 IEnumerable<T>显示列表。我的类(class)很大,我不想管理 2 个单独的 View 类(class)。

理想的目标是为每个不同的映射场景提供 2 个不同的 AutoMapper 映射 1,而不是仅限于在引导阶段使用 CreateMap 创建的映射。我如何实现这一目标?实际上,我想根据我在代码中的位置来切换映射策略。

最佳答案

理想情况下,您将使用两个不同的 View 模型并将源映射到所需的目的地。但是,如果您不想走这条路,一个选择是创建一个具有两个只读属性的 View 模型。

public class SomeClassViewModel
{
public string FirstName { get; set;}

public string LastName { get; set; }

public string Emails { get; set; }

public string EmailsCSV
{
get
{
var csv = Emails;
//Do CSV transform here
return csv;
}
}

public string EmailsCRLF
{
get
{
var crlf = Emails;
//Do crlf transform here
return crlf;
}
}

}

同样,理想情况下,您会希望坚持每个 View 一个模型的规则。这并不意味着您需要为每个模型编写一个全新的 View ,继承总是存在的。

MyViewModelA : MyViewModelBase
MyViewModelB : MyViewModelBase

关于c# - 如何在 AutoMapper 中为同一类型调用不同的映射策略?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7029072/

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