【发布时间】:2018-04-05 05:37:57
【问题描述】:
我想知道是否有一种方法可以为某个属性设置与 Json.NET 中同一类的其他属性相关的默认值,例如:
public class JsonsoftExample
{
[JsonProperty(Required = Required.Always)]
public DateTime Start { get; set; }
[JsonProperty(DefaultValueHandling = DefaultValueHandling.Populate)]
[DefaultValue(Start.AddHours(1))]
public DateTime End { get; set; }
}
我在这里尝试完成的是用 DateTime 值填充 End,该值比 Start 晚一小时,例如在反序列化时json 到域模型并且 End 值丢失或为空。像这样:
string json = "{\"Start\": \"2017-01-01T08:00:00+01:00\"}";
var deserialized = JsonConvert.DeserializeObject<JsonsoftExample>(json);
我现在这样做的方式只是稍后在代码中检查 End 值是否在我的域对象中为空,如果是 - 使用所需的值填充它。
代码示例中提出的方法是否可行,或者除了上面段落中的手动检查之外,是否有更好更简单的方法?
【问题讨论】: