Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/24.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# 自动映射:从自动映射对象解析源属性名称_C#_.net_Automapper - Fatal编程技术网

C# 自动映射:从自动映射对象解析源属性名称

C# 自动映射:从自动映射对象解析源属性名称,c#,.net,automapper,C#,.net,Automapper,鉴于以下类别: public class User { public int Id {get;set;} public PersonName Name {get;set;} } public class PersonName { public string FirstName {get;set;} public string LastName {get;set;} } public class UserDto { public int Id {get;set;}

鉴于以下类别:

public class User
{
  public int Id {get;set;}
  public PersonName Name {get;set;}
}

public class PersonName 
{
  public string FirstName {get;set;}
  public string LastName {get;set;}
}


public class UserDto 
{
  public int Id {get;set;}
  public string FirstName {get;set;}
}
以及以下映射配置:

 Mapper.CreateMap<User, UserDto>()
            .ForMember(destination => destination.FirstName, 
            options => options.MapFrom(source => source.Name.FirstName))
Mapper.CreateMap()
.ForMember(destination=>destination.FirstName,
options=>options.MapFrom(source=>source.Name.FirstName))
是否可以解析目标对象上给定属性的源属性名称:

比如:

Assert.AreEqual(GetSourcePropertyName<User, UserDto>("FirstName"), "Name.FirstName")
Assert.AreEqual(GetSourcePropertyName(“FirstName”),“Name.FirstName”)
因为MapFrom()接受lambda,所以目标属性可能映射到任何对象。 你可以使用任何你想要的lambda。考虑这一点:

.ForMember(
    destination => destination.FullName,  
    options => options.MapFrom(source => source.Name.FirstName + " " + source.Name.LastName)
);
因为不必强制创建简单属性访问器lambdas,所以不能将源表达式简化为简单属性名称字符串

如果MapFrom()采用
Expression
,则可以将表达式转换为字符串,但无法按当前编写的方式执行