gpt4 book ai didi

automapper - 使用 AutoMapper 进行条件投影

转载 作者:行者123 更新时间:2023-12-04 19:18:25 31 4
gpt4 key购买 nike

假设我在“消息”类上有一个“评论”属性。我还有 2 个类属性,它们具有“Body”属性。如果该类设置了任一类属性,我希望 AutoMapper 将 Body 属性投影到模型的 comment 属性中,否则在消息类上使用普通的 comment 属性。

例如

public class Message
{
public string Comment { get; set; }
public Inbound? InboundMessage { get; set; }
public Outbound? OutboundMessage { get; set; }
}

public class Inbound
{
public string Body { get; set; }
}

public class Outbound
{
public string Body { get; set; }
}


public class MessageModel
{
public string Comment { get; set; }
}

我在处理此问题的文档中没有看到任何内容。

最佳答案

使用 ValueResolver:

.ForMember(dto => dto.Comment, opt => opt.ResolveUsing<CommentResolver>().FromMember(src => src))

然后是实际的实现:
public class CommentResolver: ValueResolver<Message, string>
{
protected override string ResolveCore(Message msg)
{
//logic goes here
if (msg.InboundMessage != null)
return msg.InboundMessage.Body;
else if (msg.OutboundMessage != null)
return msg.OutboundMessage.Body;
else
return msg.Comment;

}
}

关于automapper - 使用 AutoMapper 进行条件投影,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6522569/

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