基本上我想有条件地忽略基于映射父级的属性。
一个例子:
以下是我的DTO:
public class PersonDTO
{
public int Id { get; set; }
public string Name { get; set; }
public List<EmploymentDTO> Employments { get; set; }
public List<HobbyDTO> Hobbies { get; set; }
}
public class EmploymentDTO
{
public int Id { get; set; }
public string Name { get; set; }
public PersonDTO Person { get; set; }
}
public class HobbyDTO
{
public int Id { get; set; }
public string Name { get; set; }
public PersonDTO Person { get; set; }
}
如果我要求一个人,那么我希望看到它的工作和爱好归来,但不是就业或爱好的人。所以我不希望在以下JSON中看到person对象:
{
Id : 123,
Name : "Person1",
Employments [
{
Id : 1,
Name : "Employment1",
Person : { ... }
},
{
Id : 2,
Name : "Employment2",
Person : { ... }
}],
Hobbies [
{
Id : 1,
Name : "Hobby1",
Person : { ... }
},
{
Id : 2,
Name : "Hobby2",
Person : { ... }
}]
}
同样,如果请求就业,我希望在person对象上返回不带雇员和爱好属性的以下JSON:
{
Id : 1,
Name : "Employment1"
Person : {
Id : 123,
Name : "Person1",
Employments : [ ... ],
Hobbies : [ ... ]
}
}
使用Automapper有没有办法做到这一点?我玩过Ignore和Condition但是没能达到我的需求。我想我需要根据父父对象的内容忽略属性。
答案 0 :(得分:0)
你看过明确的扩张吗? https://github.com/AutoMapper/AutoMapper/wiki/Queryable-Extensions#explicit-expansion
您可以指示AutoMapper仅在运行时展开某些属性。它可以在AutoMapper的LINQ模式下使用。