我很难与来自第三方API的optional
返回的20多个字符串类型属性达成协议。
示例:
Subject {
subjectId (integer, optional),
shortName (string, optional),
shortCode (string, optional),
colour (string, optional),
description (string, optional),
name (string, optional)
}
在我的代码中,在得到主题列表后,我必须检查每个可选属性以避免object reference exceptions
。在主题非常简单的情况下:
var subjectId = subjectId ?? -1;
var name = !String.IsNullOrEmpty(name) ? name : String.Empty;
var boolValue = boolValue ?? false; // if a boolean value is optional
我使用Web API请求数据,因此JSON响应被反序列化为数据传输对象。
示例:
public class SubjectDto {
public int? subjectId { get; set; }
public string shortName { get; set; }
public string shortCode { get; set; }
public string colour { get; set; }
public string description { get; set; }
public string name { get; set; }
}
所以,我想知道是否可以用注释装饰DTO类属性,以便在反序列化JSON时自动处理检查?
subjects = await response.Content.ReadAsAsync<SubjectDto>();
虽然Subjects
很简单,但它可以减少在某些其他类中检查20+ string,int,boolean属性的混乱。