gpt4 book ai didi

c# - 自动映射器 : passing parameter to Map method

转载 作者:IT王子 更新时间:2023-10-29 04:14:08 26 4
gpt4 key购买 nike

我正在使用 Automapper在一个项目中,我需要动态地确定目标对象的一个​​字段。

在我的配置中我有类似的东西:

cfg.CreateMap<Message, MessageDto>()
// ...
.ForMember(dest => dest.Timestamp, opt => opt.MapFrom(src => src.SentTime.AddMinutes(someValue)))
//...
;

配置代码中的someValue是我需要在运行时传递给映射器的参数,不是源对象的字段。

有办法实现吗?像这样:

Mapper.Map<MessageDto>(msg, someValue));

最佳答案

您无法完全按照自己的意愿行事,但您可以通过在调用 Map 时指定映射选项来非常接近。忽略配置中的属性:

cfg.CreateMap<Message, MessageDto>()
.ForMember(dest => dest.Timestamp, opt => opt.Ignore());

然后在调用 map 时传入选项:

int someValue = 5;
var dto = Mapper.Map<Message, MessageDto>(message, opt =>
opt.AfterMap((src, dest) => dest.TimeStamp = src.SendTime.AddMinutes(someValue)));

请注意,您需要使用 Mapper.Map<TSrc, TDest>重载以使用此语法。

关于c# - 自动映射器 : passing parameter to Map method,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34392569/

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