J'ai une classe qui a un constructeur par défaut et aussi un constructeur surchargé qui prend dans un ensemble de paramètres. Ces paramètres correspondent aux champs de l'objet et sont affectés lors de la construction. À ce stade, j'ai besoin du constructeur par défaut à d'autres fins, je voudrais donc le conserver si je le peux.
Mon problème: si je supprime le constructeur par défaut et passe la chaîne JSON, l'objet se désérialise correctement et transmet les paramètres du constructeur sans aucun problème. Je finis par récupérer l'objet peuplé comme je m'y attendais. Cependant, dès que j'ajoute le constructeur par défaut dans l'objet, lorsque j'appelle, JsonConvert.DeserializeObject<Result>(jsontext)
les propriétés ne sont plus remplies.
À ce stade, j'ai essayé d'ajouter new JsonSerializerSettings(){CheckAdditionalContent = true}
à l'appel de désérialisation. cela n'a rien fait.
Une autre note. les paramètres du constructeur correspondent exactement aux noms des champs, sauf que les paramètres commencent par une lettre minuscule. Je ne pense pas que cela importerait car, comme je l'ai mentionné, la désérialisation fonctionne bien sans constructeur par défaut.
Voici un échantillon de mes constructeurs:
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;
}