同时进行的方法
我想在我进行验证之后验证JSON代码。
例如,如果我有...
using Newtonsoft.Json;
...
public Car
{
public int Year{ get; set; }
public String Make{ get; set; }
}
...
JsonConvert.DeserializeObject<Car>(json)
我想验证这一年是 < 2017 && >=1900
,例如(例如)。
或者,也许确保该品牌是一个非空字符串(或者是可接受的值)。
我知道我可以在之后添加 Validate()
type函数 我很好奇,如果有一种与 JsonConvert.DeserializeObject<Car>(json)
可能是该作业的正确工具是序列化回调
只需创建一个Validate
方法,然后在其上拍打[OnDeserialized]
属性:
public Car
{
public int Year{ get; set; }
public String Make{ get; set; }
[OnDeserialized]
internal void OnDeserializedMethod(StreamingContext context)
{
if (Year > 2017 || Year < 1900)
throw new InvalidOperationException("...or something else");
}
}
用设定器将其插入。
public class Car
{
private int _year;
public int Year
{
get { return _year; }
set
{
if (_year > 2017 || _year < 1900)
throw new Exception("Illegal year");
_year = value;
}
}
}
对于整个对象验证,只需在设置一个值时验证。
public class Car
{
private int _year;
private string _make;
public string Make
{
get { return _make; }
set
{
_make = value;
ValidateIfAllValuesSet();
}
}
public int Year
{
get { return _year; }
set
{
_year = value;
ValidateIfAllValuesSet();
}
}
private void ValidateIfAllValuesSet()
{
if (_year == default(int) || _make == default(string))
return;
if (_year > 2017 || _year < 1900)
throw new Exception("Illegal year");
}
}