gpt4 book ai didi

c# - AutoMapper ResolveUsing 未被调用

转载 作者:行者123 更新时间:2023-12-04 11:46:36 24 4
gpt4 key购买 nike

我有一个我目前使用的映射 MapFrom一切都按预期进行。

我正在尝试更换 MapFromResolveUsing我发现我的解析函数根本没有被调用。就好像代码不存在一样(当在构造函数中尝试带有断点的类形式时,它不会被命中)。

// This works as expected
CreateMap<Contact, ContactListViewModel>()
.ForMember(dest => dest.FirstName, map =>
map.MapFrom(s => s.RelationshipTypeId == Relationship.SELF ? s.Person.FirstName : s.FirstName))

// This doesnt. Resolver never invoked
CreateMap<Contact, ContactListViewModel>()
.ForMember(dest => dest.FirstName, opt => opt.ResolveUsing<CustomResolver>());

// Example resolver
public class CustomResolver : IValueResolver<object, object, string>
{
public CustomResolver()
{
// never called
}

public string Resolve(object source, object destination, string member, ResolutionContext context)
{
return ... // never invoked
}
}

这看起来很基本,我确实有其他映射,我成功地使用了 ResolveUsing。关于如何调试这个并确定为什么我的映射被忽略的任何想法?

最佳答案

我有这个确切的问题,使用 AutoMapper 10.1.1 和 C# 9 的记录;
注意:.ResolveUsing<>方法不再可用,它已被通用 MapFrom<> 取代方法;
我试图将一个记录映射到另一个记录。目标记录有一个构造函数:record Record(string Property)在我的情况下的解决方案是调用 .ConstructUsing()毕竟.ForMember()调用。
最终的映射将如下所示:

CreateMap<SourceRecord, Record>()
.ForMember(x=>x.Property,config=>config.MapFrom<PropertyResolver>)
.ConstructUsing(source=> new Record(string.Empty))
请注意,您可以使用默认值作为构造函数参数的参数,Automapper 仍将正确映射所有其他属性。
当我再次遇到这个问题时,我希望这对某人或 future 的我有所帮助。

关于c# - AutoMapper ResolveUsing 未被调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47836124/

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