gpt4 book ai didi

c# - 通过 ForMember 从自定义 map 中提取 AutoMapper 源名称

转载 作者:行者123 更新时间:2023-11-30 18:43:19 25 4
gpt4 key购买 nike

我已经使用以下代码从现有的 Automapper TypeMap 中成功提取了简单的源/目标对:

private MemberInfo getSource(Type destinationType, string destinationPropertyname)
{
TypeMap map = Mapper.GetAllTypeMaps()
.Where(m => m.DestinationType.Equals(destinationType))
.First();
IEnumerable<PropertyMap> properties =
map.GetPropertyMaps()
.Where(p => p.DestinationProperty
.Name
.Equals(destinationPropertyname,
StringComparison.CurrentCultureIgnoreCase));
PropertyMap sourceProperty = properties.First();
IMemberGetter mg = sourceProperty.GetSourceValueResolvers()
.Cast<IMemberGetter>()
.First();

return mg.MemberInfo;
}

但是,当我像这样添加自定义列映射时:

Mapper.CreateMap<Customer, CustomerViewModel>()
.ForMember(dest => dest.Cell, opt => opt.MapFrom(src => src.CellPhone))
.ForMember(dest => dest.Email, opt => opt.MapFrom(src => src.EmailAddress));

...据我所知,GetSourceResolvers() 不提供映射的源部分。

非常感谢您提供的任何指导。

谢谢。

-杰西·豪尔

最佳答案

这符合您的要求吗?

var map = Mapper.FindTypeMapFor<Customer, CustomerViewModel>();

foreach( var propertMap in map.GetPropertyMaps() )
{
var dest = propertMap.DestinationProperty.MemberInfo;
var source = propertMap.SourceMember;
}

关于c# - 通过 ForMember 从自定义 map 中提取 AutoMapper 源名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4684387/

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