我使用AutoMapper 4.X如下(简化代码段)
Mapper.CreateMap<A,B>()
.ForMember(myB.MyProp, o => o.Foo()); // Foo is an extention method -> see below
public static void Foo<T> (this IMemberConfigurationExpression<T> config)
{
config.ResolveUsing((resolutionResult, source) =>
{
var name = resolutionResult.Context.MemberName; // this is what I want
}
}
AutoMapper 5.X在调用resolutionResult
时不再有config.ResolveUsing
,因此我无法获取我想要的信息(MemberName
)。
任何想法如何调整代码以使其适用于AutoMapper 5?
答案 0 :(得分:2)
如果您要投放到MemberConfigurationExpression
,您就可以访问包含所需信息的DestinationMember
:
public static void Foo<TSrc, TObj>(this IMemberConfigurationExpression<TSrc, TObj, object> config)
{
config.ResolveUsing((resolutionResult, source) =>
{
var memberConfExpr = config as MemberConfigurationExpression<TSrc, TObj, object>;
if (memberConfExpr == null)
return false;
var name = memberConfExpr.DestinationMember.Name;
// ...
});
}