gpt4 book ai didi

c# - 如何使用 AutoMapper 将 viewModel 映射到具有数组的层次结构模型?

转载 作者:太空宇宙 更新时间:2023-11-03 16:46:33 25 4
gpt4 key购买 nike

深层模型是用代码生成的,其中包含许多数组(想想 WCF 代理生成的基于 wsdl 的代码),需要用扁平化的 View 模型填充。 2 个模型之间没有命名约定。

平面模型看起来像这样:

public class ViewModel
{
public string Item1 { get; set; }
public string Item2 { get; set; }
}

深度模型看起来像这样的例子:

public class DeepLevel0
{
public DeepLevel1 Level1 { get; set; }
}

public class DeepLevel1
{
public string Prop1;
public DeepLevel2[] Level2 { get; set; }
}

public class DeepLevel2
{
public string Prop2;
public string Prop3;
}

最终的映射结果应该是这样的

DeepLevel0.Level1.Prop1 = ViewModel.Item1
DeepLevel0.Level1.Level2[0].Prop2 = ViewModel.Item2
DeepLevel0.Level1.Level2[0].Prop2 = null;

我真的很喜欢 AutoMapper 中的验证系统,知道您处理了所有属性。

我得到了以下工作(但失去了验证):

  Mapper.CreateMap<ViewModel, DeepLevel0>()
.ForMember(d => d.Level1, opt => opt.MapFrom(s =>
new DeepLevel1 {
Prop1 = s.Item1,
Level2 = new[]
{
new DeepLevel2
{
Prop2 = s.Item2,
Prop3 = null
}
}
}));
}

还有其他更好的方法吗?

最佳答案

不,我不这么认为。您始终可以切换为对 DeepLevel 对象使用构造函数,这可能会稍微整理一下它们。

关于c# - 如何使用 AutoMapper 将 viewModel 映射到具有数组的层次结构模型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5745362/

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