【问题标题】:Migrating to AutoMapper 5迁移到 AutoMapper 5
【发布时间】:2016-11-15 16:09:01
【问题描述】:

我使用 AutoMapper 4.X 如下(简化的 sn-p)

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 在调用 config.ResolveUsing 时不再有 resolutionResult,因此我无法从中获取我想要的信息 (MemberName)。

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

【问题讨论】:

    标签: c# .net automapper automapper-5


    【解决方案1】:

    如果您将转换为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;
    
            // ...
        });
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-12-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-02-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多