C# 自动映射传递FormMember作为参数
有没有办法让我做这样的事C# 自动映射传递FormMember作为参数,c#,automapper,C#,Automapper,有没有办法让我做这样的事 public void CreateMap<T, I>(??? ForMember) { Mapper.CreateMap<T, I>().ForMember(ForMember); } public void CreateMap(?ForMember) { Mapper.CreateMap().FormMember(FormMember); } 我只是尝试将FormMember作为参数传递给一个方法,然后将其附加到映射上。这里有一种可能
public void CreateMap<T, I>(??? ForMember)
{
Mapper.CreateMap<T, I>().ForMember(ForMember);
}
public void CreateMap(?ForMember)
{
Mapper.CreateMap().FormMember(FormMember);
}
我只是尝试将FormMember作为参数传递给一个方法,然后将其附加到映射上。这里有一种可能的方法:给定两个类
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));
}
私有静态void CreateMap
(从表情到表情,
表达式到表达式)
{
Mapper.CreateMap()
.ForMember(ToExpression,opt=>opt.MapFrom(FromExpression));
}
并通过直接传递lambda来调用它:
CreateMap<ExampleClass, OtherExampleClass>(fromClass => fromClass.Name, toClass => toClass.OtherName);
CreateMap(fromClass=>fromClass.Name,toClass=>toClass.OtherName);
IMappingExpression
(从ForMember
方法返回的类型)不应使用。它包含配置和链接方法,但我认为它不应该来自外部。通过对代码的简要调查,我找不到任何可以添加IMappingExpression
的点,因此在imo中使用两个lambda将是最好的选择我认为您必须将两个参数传递给.ForMember方法。您将如何调用您的方法?我想我将使用添加FormMember所需的参数来调用它。我想这正是我正在努力解决的问题。FormMember有两个必需参数,您希望如何只通过一个?这个问题首先是基于缺乏如何做到这一点的知识。我想我要寻找的是一种将FormMember添加到映射的方法。@thepirat000:如果您再次阅读该问题,OP会询问如何将FormMember()
添加到映射。显然,如果他想调用ForMember()
方法,他会这样做。如果你不能理解这个问题,你不应该试图回答它。