gpt4 book ai didi

c# - 是否可以在 AfterMap 中调用 Mapper.Map?

转载 作者:行者123 更新时间:2023-11-30 14:07:39 24 4
gpt4 key购买 nike

以某种方式允许这样的事情吗?

CreateMap<UserViewModel, User>()
.ForMember(u => u.Password, o => o.Ignore())
.AfterMap((src, dest) => {
...
var entity = Mapper.Map<Entity>(src.SomeProperty);
...
});

对我不起作用,它说试图在 AfterMap 中使用的映射不存在。

最佳答案

我注意到您在映射中使用静态 AutoMapper 类,但是您是否还在映射之外使用静态实例并且它是否为您的 Entity< 配置了映射类?

下面的工作,请注意 context.Mapper 调用确保相同的 AutoMapper 实例用于调用 Map 和后续 AfterMap 方法。

var config = new MapperConfiguration(cfg =>
{
cfg.CreateMap<UserViewModel, User>()
.AfterMap((source, destination, context) =>
{
var entity = context.Mapper.Map<Entity>(source.SomeProperty);
});

cfg.CreateMap<EntityViewModel, Entity>();
});

var mapper = config.CreateMapper();

var viewModel = new UserViewModel
{
Name = "Test User",
SomeProperty = new EntityViewModel
{
Value = "Sub Class"
}
};

var user = mapper.Map<User>(viewModel);

关于c# - 是否可以在 AfterMap 中调用 Mapper.Map?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39187208/

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