C# 从AutoMapper定义的映射中获取所有已定义的映射
假设我有两个类:CD和CDModel,映射定义如下:C# 从AutoMapper定义的映射中获取所有已定义的映射,c#,dictionary,expression,automapper,C#,Dictionary,Expression,Automapper,假设我有两个类:CD和CDModel,映射定义如下: Mapper.CreateMap() .ForMember(c=>c.Name,opt=>opt.MapFrom(m=>m.Title)); 有没有一种简单的方法可以从映射中检索原始的表达式,比如c=>c.Name(用于源)和m=>m.Title(用于目标) 我试过了,但我错过了一些东西 var-map=Mapper.FindTypeMapFor(); foreach(map.GetPropertyMaps()中的var propertMa
Mapper.CreateMap()
.ForMember(c=>c.Name,opt=>opt.MapFrom(m=>m.Title));
有没有一种简单的方法可以从映射中检索原始的表达式,比如c=>c.Name(用于源)和m=>m.Title(用于目标)
我试过了,但我错过了一些东西
var-map=Mapper.FindTypeMapFor();
foreach(map.GetPropertyMaps()中的var propertMap)
{
var源=???;
var dest=propertMap.DestinationProperty.MemberInfo;
}
如何获取源表达式和目标表达式?与您正在执行的操作的路径相同
foreach( var propertMap in map.GetPropertyMaps() )
{
var dest = propertMap.DestinationProperty.MemberInfo;
var source = propertMap.SourceMember;
}
你到底想要怎样的表达?你想要基本的羔羊肉吗
如果是的话,看看
propertMap.GetSourceValueResolvers()
我还发现
var-map=Mapper.GetAllTypeMaps()
也很有用,因为您可以搜索源类型或目标类型我正在使用Automapper 7.0,语法现在不同了。比如说,
void Dump(TypeMap map)
{
Console.WriteLine("---------------------------------------------------------------------");
Console.WriteLine(map.SourceType + " ==> " + map.DestinationType);
foreach (var m in map.GetPropertyMaps())
{
Console.WriteLine(m.SourceMember.Name + " ==> " + m.DestinationProperty.Name);
}
}
然后您可以使用以下命令调用它:
Dump(Mapper.Instance.ConfigurationProvider.FindTypeMapFor(typeof(CDModel), typeof(CD)));
或者如果你想把所有东西都扔掉,那么就这样做
foreach (var map in Mapper.Instance.ConfigurationProvider.GetAllTypeMaps())
{
Dump(map);
}
等价于AutoMapper 8中map.GetPropertyMaps()中的
var m?有关涵盖AutoMapper 7和8的解决方案,请参阅