Ho una classe che ha un costruttore predefinito e anche un costruttore sovraccarico che accetta un set di parametri. Questi parametri corrispondono ai campi sull'oggetto e sono assegnati in fase di costruzione. A questo punto ho bisogno del costruttore predefinito per altri scopi, quindi vorrei tenerlo se posso.
Il mio problema: se rimuovo il costruttore predefinito e passo la stringa JSON, l'oggetto si deserializza correttamente e passa i parametri del costruttore senza problemi. Finisco per recuperare l'oggetto popolato come mi aspetterei. Tuttavia, non appena aggiungo il costruttore predefinito nell'oggetto, quando chiamo JsonConvert.DeserializeObject<Result>(jsontext)
le proprietà non vengono più popolate.
A questo punto ho provato ad aggiungere new JsonSerializerSettings(){CheckAdditionalContent = true}
alla chiamata di deserializzazione. quello non ha fatto niente.
Un'altra nota i parametri dei contruttori corrispondono esattamente ai nomi dei campi, tranne per il fatto che i parametri iniziano con una lettera minuscola. Non penserei che questo importerebbe poiché, come ho già detto, la deserializzazione funziona bene senza un costruttore predefinito.
Ecco un esempio dei miei costruttori:
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;
}