Ich habe eine Klasse mit einem Standardkonstruktor und einem überladenen Konstruktor, der eine Reihe von Parametern akzeptiert. Diese Parameter stimmen mit Feldern im Objekt überein und werden bei der Erstellung zugewiesen. An diesem Punkt brauche ich den Standardkonstruktor für andere Zwecke, also möchte ich ihn behalten, wenn ich kann.
Mein Problem: Wenn ich den Standardkonstruktor entferne und die JSON-Zeichenfolge übergebe, deserialisiert das Objekt korrekt und übergibt die Konstruktorparameter ohne Probleme. Am Ende bekomme ich das Objekt so zurück, wie ich es erwartet hätte. Sobald ich jedoch den Standardkonstruktor zum Objekt hinzufüge, werden beim Aufrufen JsonConvert.DeserializeObject<Result>(jsontext)
die Eigenschaften nicht mehr ausgefüllt.
Zu diesem Zeitpunkt habe ich versucht new JsonSerializerSettings(){CheckAdditionalContent = true}
, den Deserialisierungsaufruf zu ergänzen. das hat nichts getan.
Noch ein Hinweis. Die Konstruktorparameter stimmen genau mit den Namen der Felder überein, außer dass die Parameter mit einem Kleinbuchstaben beginnen. Ich würde nicht denken, dass dies eine Rolle spielen würde, da die Deserialisierung, wie bereits erwähnt, ohne Standardkonstruktor einwandfrei funktioniert.
Hier ist ein Beispiel meiner Konstruktoren:
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;
}