最佳答案
我有一个类,它有一个缺省构造函数,还有一个重载的构造函数,它接受一组参数。这些参数与对象上的字段匹配,并在构造时分配。现在我需要这些缺省构造函数作其他用途,所以如果可以的话,我想保留它们。
我的问题: 如果我删除缺省构造函数并传入 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;
}