我有办法做这样的事吗?
public void CreateMap<T, I>(??? ForMember)
{
Mapper.CreateMap<T, I>().ForMember(ForMember);
}
我只是试图将ForMember作为参数传递给我然后可以附加到地图的方法。
答案 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