gpt4 book ai didi

c# - 使用映射库将嵌套对象映射到 C# 中的自定义对象

转载 作者:太空狗 更新时间:2023-10-30 00:48:03 24 4
gpt4 key购买 nike

我有以下对象结构:

/// <summary>
/// nested message instance provided by a business service
/// </summary>
public class Message
{
public string Subject { get; set; }
public DateTime CreationDate { get; set; }
public List<Message> Messages { get; set; }
}

我想将该对象映射到以下对象结构:

/// <summary>
/// UI Object used to display a nested message structure
/// </summary>
public class MessageViewModel : ViewModelBase
{
public bool IsSelected { get; set; }

public string Subject { get; set; }

public DateTime CreationDate { get; set; }
public List<MessageViewModel> Messages { get; set; }
}

是否有任何映射器可以轻松完成工作?

最佳答案

您可以使用 AutoMapper为了这。要首先映射某些类型,您需要创建一些映射:

Mapper.Initialize(cfg => cfg
.CreateMap<Message, MessageViewModel>());

这会创建一个从 MessageMessageViewModel 的映射。默认情况下,AutoMapper 映射具有相同名称的所有属性。当指定了其类型的映射时,嵌套的复杂属性也将被映射。因此,在您的示例中,上面的映射就足够了,因为嵌套属性类型与其父类型相同,并且源类型的每个属性在目标类型中都有其对应的同名属性。集合隐式映射到其他集合。

要映射具体对象,您可以使用 Mapper.Map 方法:

var messageViewModel = Mapper.Map<MessageViewModel>(message);

这只是静态映射器的示例,但也可以将映射器创建为对象。对于更高级的主题,您可以阅读文档:http://docs.automapper.org/en/stable/

关于c# - 使用映射库将嵌套对象映射到 C# 中的自定义对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50456598/

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