Automapper将ForMember作为参数传递

时间:2014-03-20 02:28:28

标签: c# automapper

我有办法做这样的事吗?

public void CreateMap<T, I>(??? ForMember)
{
  Mapper.CreateMap<T, I>().ForMember(ForMember);
}

我只是试图将ForMember作为参数传递给我然后可以附加到地图的方法。

1 个答案:

答案 0 :(得分:2)

这是一种可行的方法:给定两个类

internal class ExampleClass
{
    public string Name { get; set; }
}

internal class OtherExampleClass
{
    public string OtherName { get; set; }
}

定义以下功能

 private static void CreateMap<From, To>
                              (Expression<Func<From, object>> FromExpression,
                              Expression<Func<To, object>> ToExpression)
 {
     Mapper.CreateMap<From, To>()
     .ForMember(ToExpression, opt => opt.MapFrom(FromExpression));
 }

通过直接传递lambdas来调用它:

CreateMap<ExampleClass, OtherExampleClass>(fromClass => fromClass.Name, toClass => toClass.OtherName);

IMappingExpression(从ForMember方法返回的类型)不是您应该使用的。它保存配置和链接方法,但我不认为它应该来自外部。通过对代码的简要调查,我找不到任何可以添加IMappingExpression的点,所以使用这两个lambdas将是你最好的选择imo