Skip to main content
 首页 » 编程设计

c#之Mapster之如何忽略空属性的映射

2024年02月27日133fff_TT

我正在使用 Mapster 将 Dto 实例映射到模型对象。

Dto 由 Javascript 客户端发送,仅发送更新的属性。

我想忽略空值,并让 Mapster 保留此属性的模型实例不变。

更好地解释场景的简化示例:

// My .Net Dto class, used for client/server communication. 
public class PersonDto 
{ 
  public string Id { get; set; } 
  public string Name { get; set; } 
  public string Family { get; set; } 
} 
 
// My Model class. Let's assume is the same data as per the Dto. 
public class Person 
{ 
  public string Id { get; set; } 
  public string Name { get; set; } 
  public string Family { get; set; } 
} 
 
public void Update() 
{ 
  var existingPerson = new Person 
  { 
    Id = "A", 
    Name = "Ned", 
    Family = "Stark" 
  }; 
 
  var patchDataSentFromClient = new PersonDto 
  { 
    Id = "A", 
    Name = "Rob" 
  }; 
 
  patchDataSentFromClient.Adapt(existingPerson); 
 
  // Here existingPerson.Family should be "Stark", but it gets emptied out. 
  // the mapping should be equivalent to: 
  // if (patchDataSentFromClient.Family != null) existingPerson.Family = patchDataSentFromClient.Family; 
} 

编辑:关键是我不想为我的 Dto 中的数千个属性中的每一个写下映射条件。我希望 Mapster 按名称自动映射所有字符串属性,但保留忽略空值的“类似补丁”的逻辑。

请您参考如下方法:

您可以使用 IgnoreNullValues .