迁移到AutoMapper 5

时间:2016-11-15 16:09:02

标签: c# .net automapper automapper-5

我使用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?

1 个答案:

答案 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;

        // ...
    });
}