Eu tenho uma classe que tem um construtor padrão e também um construtor sobrecarregado que recebe um conjunto de parâmetros. Esses parâmetros correspondem aos campos no objeto e são atribuídos na construção. Neste ponto, preciso do construtor padrão para outros fins, portanto, gostaria de mantê-lo, se puder.
Meu problema: se eu remover o construtor padrão e passar a string JSON, o objeto desserializa corretamente e passa os parâmetros do construtor sem problemas. Acabo voltando ao objeto preenchido da maneira que eu esperaria. No entanto, assim que adiciono o construtor padrão ao objeto, quando eu chamo JsonConvert.DeserializeObject<Result>(jsontext)
as propriedades não são mais preenchidas.
Neste ponto, tentei adicionar new JsonSerializerSettings(){CheckAdditionalContent = true}
à chamada de desserialização. isso não fez nada.
Outra nota. os parâmetros do contratante correspondem exatamente aos nomes dos campos, exceto que os parâmetros são iniciados com uma letra minúscula. Eu não acho que isso importaria, pois, como mencionei, a desserialização funciona bem sem construtor padrão.
Aqui está uma amostra dos meus construtores:
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;
}