2

次のように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 で動作するようにコードを適応させる方法はありますか?

4

1 に答える 1

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;

        // ...
    });
}
于 2016-11-15T17:18:10.147 に答える