Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/amazon-s3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 自动映射传递FormMember作为参数_C#_Automapper - Fatal编程技术网

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()
方法,他会这样做。如果你不能理解这个问题,你不应该试图回答它。