我有一个类,它有一个默认构造函数和一个重载构造函数,接受一组参数。这些参数与对象上的字段相匹配,并在构造时进行赋值。此时我需要默认构造函数用于其他目的,因此如果可能的话,我想保留它。
我的问题是:如果我删除默认构造函数并传入JSON字符串,则对象将正确反序列化并在构造函数参数中传递,没有任何问题。我最终得到的对象填充方式与我期望的相同。但是,一旦我将默认构造函数添加到对象中,当我调用 JsonConvert.DeserializeObject<Result>(jsontext)
时,属性将不再被填充。
此时,我已尝试向反序列化调用中添加 new JsonSerializerSettings(){CheckAdditionalContent = true}
,但这没有任何作用。
另一个注意点:构造函数参数确实与字段名称完全匹配,只是参数以小写字母开头。我认为这并不重要,因为像我之前提到的那样,没有默认构造函数时反序列化运行良好。
这是我的构造函数示例:
public Result() { }
public Result(int? code, string format, Dictionary<string, string> details = null)
{
Code = code ?? ERROR_CODE;
Format = format;
if (details == null)
Details = new Dictionary<string, string>();
else
Details = details;
}