Ich finde mich ein wenig verloren auf diesem. Ich kann ehrlich gesagt den Fehler nicht sehen, wenn nur eine Klassenstruktur nicht mit JSON-Fehlern übereinstimmt. Aber ich bezweifle es, da es genau dieselbe Klassenstruktur ist, die ich zum Erstellen des JSON verwende.Json.Net Klassenhierarchie mit ObservableCollection und INotifyPropertyChange wird serialisiert, aber nicht deserialisiert
Wenn mir jemand in die richtige Richtung zeigen kann, wäre ich sehr dankbar.
Ich habe eine Dotnetfiddle erstellt, um zu vermeiden, die Frage mit riesigen Stücken Code zu erfassen. Hier ist der Link: Fiddle
Ich generiere das JSON mit einer Konsolenanwendung, die Informationen über das DB-Schema erhält. Ich verwende ein gemeinsames Projekt mit allen darin definierten Entitäten, um die Daten in den Speicher zu laden und dann den JSON von dieser Struktur zu generieren. Dann benutze ich dasselbe Projekt mit denselben Entitäten in einer anderen Anwendung, um ein anderes DB-Schema mit dem JSON-Protokoll zu vergleichen. Diese Anwendung kann das JSON nicht deserialisieren. Versucht, ein minimales Beispiel mit einer einzelnen Klasse zu liefern und wie Sie auf der Geige sehen können ... das deserialisiert auch nicht. Es ist mein Verständnis, dass ObservableCollections in der Tat ohne Probleme serialisieren und deserialisieren sollte, und dass INotifyPropertyChange keine Probleme verursachen sollte (solange Sie nicht versuchen, ein Ereignis mit einer Nullreferenz auszulösen). Also ... hat irgendjemand eine Idee, was hier vor sich geht?
EDIT: Vergessen zu erwähnen. Beachten Sie, dass nur die Basistyp-Zeichenfolge deserialisiert wird ... daher wird eine Deserialisierung ausgeführt, nur keine Klassen wie ObservableCollection oder Benutzerklassen. Vielleicht hilft das irgendwie, das Problem zu lokalisieren.
EDIT2: Es wurde ein Trace-Writer und die JSON.Net Spur ist die richtige Art für die Erkennung von Objekten, so dass ich das Problem zu erraten ist Arten auf Umwandlung oder einige der Arten
Vielen Dank für die Erklärung. Ich habe beide Korrekturen angewendet. Ich war so auf das JSON-Format konzentriert, dass ich mir diese verwaiste Instanz, die ich erstellt habe, nie angesehen habe. Irgendwie peinlich. –
Keine Sorgen. Ich bin froh, dass ich helfen konnte. –