我有几个类映射到下面的结构/层次结构。
public class CustomModel
{
public string Message { get; set; }
public int Code { get; set; }
public CustomData Info { get; set; }
}
public class CustomData
{
public CustomData (CustomObject customData)
{
CustomObjectProp = customData.customMessage
}
}
public class CustomObject
{
public string CustomObjectProp {get; set;}
}
序列化自定义模型时,我得到一个如下所示的 Json 字符串
{
"Message ": "A message is set.",
"Code": 825,
"Info": "Some Info is set"
}
但是,在反序列化时,我收到一个System.NullReferenceException
错误,因为调用CustomData
的构造函数时自定义数据为空。
如何避免"getter"在二传手之前执行?
若要避免空引用异常,请在构造函数中执行空检查。
public class CustomData
{
public CustomData (CustomObject customData)
{
if(customData != null)
CustomObjectProp = customData.customMessage
}
}
如果您使用的是 C#6,则可以利用空调节器运算符以内联方式执行空检查。
public class CustomData
{
public CustomData (CustomObject customData)
{
CustomObjectProp = customData?.customMessage
}
}