CustomConverter以比较Web API中同一类的属性

问题描述 投票:0回答:1

我一直在写一些自定义转换器,扩展了Newtonsofts JsonConverter,偶然发现了一个小问题。假设我在一个类中有两个属性,但是它们不能具有相同的值。是否可以在转换器中找到另一个属性的值……例如,说我有一个像这样的模型。

我希望能够在CustomCompareConverter中检查姓氏的值,以确保其与Firstname的值不相同

public class Person
{
    [JsonConverter(typeof(CustomCompareConverter), "Surname")]
    public string Firstname { get; set; }

    public string Surname { get; set; }
}
```
asp.net-core asp.net-web-api json.net asp.net-core-2.2
1个回答
0
投票

您正在尝试使用真正应该分开的json反序列化过程来做很多事情

  1. 将一些外部json转换为您的域对象

  2. 验证域对象。

姓氏不能匹配FirstName属性的事实是您域的业务规则。因此,请将其保留在您的域内。您可以:

  1. 编写一个单独的验证器类,它将检查您的状态人员对象并返回验证失败列表
  2. 在Person类上实现IValidatableObject,并实现界面
  3. 编写类似于此SO question的自定义验证器

使用JSON反序列化过程将值转换为您的域对象结构,然后使用常规方法来验证您的域对象。

© www.soinside.com 2019 - 2024. All rights reserved.