2016-11-15 77 views
2

我使用的是AutoMapper 4.X到AutoMapper如下(简单的代码片段)调用config.ResolveUsing迁移5

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了,所以我不能够得到我想要的信息(MemberName)。

任何想法如何调整代码以使其与AutoMapper 5一起使用?

回答

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; 

     // ... 
    }); 
}