3 Stimmen

DataContractSerializer fehlt im .NET Compact Framework

Es scheint, dass der DataContractSerializer im .NET Compact Framework nicht verfügbar ist. Ich fand das ziemlich überraschend, da ich DataContractSerializer für den Heiligen Gral der Serialisierung halte und für eine der nützlichsten Klassen, die in .NET 3 eingeführt wurden.

Gibt es eine Möglichkeit, die gleiche Funktionalität unter dem Compact Framework zu erhalten, d.h. die Möglichkeit, reale Objektgraphen in einem Textformat einfach zu speichern und wiederherzustellen?

Ich würde mich lieber von den älteren, eingeschränkten .NET-Serializern wie XmlSerializer und BinarySerializer fernhalten.

Ich denke vielleicht gibt es eine benutzerdefinierte Implementierung von DataContractSerializer verfügbar, oder vielleicht ist es möglich, den Code von Mono zu verwenden? Hat jemand versucht, dies zu tun?

3voto

Marc Gravell Punkte 970173

Ist sie in CF 3.5 nicht verfügbar? (edit: nein, ich habe es überprüft - in der Tat ist es nicht). Ich weiß, dass XmlSerialzier dort ist, aber ja, es hat einige Einschränkungen.

Muss sie textbasiert sein? Eine Option ist protobuf-net die mit CF2.0, CF3.5, Silverlight, Mono, .NET 2.0 usw. funktioniert und alle Dinge enthält, die Sie üblicherweise benötigen (einschließlich Callbacks usw.).

Übrigens, der Mono-Code (von "Olive") ist, als ich das letzte Mal nachgesehen habe, nicht sehr vollständig...

(edit) Eine weitere Option könnte sein Json.NET ; von aquí Da es sich um JSON handelt, ist es textbasiert und sollte das meiste von dem tun, was Sie brauchen.

0voto

Cheeso Punkte 184210

Ich weiß nicht, ob es fair ist, den XmlSerializer als "begrenzt" zu bezeichnen. Was meinen Sie damit? Haben Sie es verwendet und fanden es mangelhaft? Was ist die spezifische Sache, die für Sie scheitert?

Meiner Erfahrung nach hat der XmlSerializer tatsächlich mehr Möglichkeiten als der DCS. Der DCS tut weniger, was wahrscheinlich eine gute Sache ist. Auf der anderen Seite tut der DCS mindestens eine Sache, die der XmlSerializer nicht tut - und das ist es kann direkt zu und von privaten Member-Vars serialisieren.

Der XmlSerializer ist schnell und recht leistungsfähig, und man kann ihn gut nutzen.

0voto

Hermit Punkte 1214

Ich habe eine Lösung gefunden :-)

Es gibt einen großartigen XML-Serialisierer unter http://www.codeproject.com/KB/XML/GR_CustomXmlSerializer.aspx .

So wie er ist, funktioniert der Code nicht auf dem Compact Framework, aber ich habe einige triviale Anpassungen vorgenommen, um ihn zum Laufen zu bringen, mit nur einem geringen Verlust an Funktionalität. Ich habe auch OpenNetCF verwendet, um ein paar fehlende CF-Teile zu ergänzen.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X