Frage

Ich versuche, den besten Weg, um herauszufinden, Serialisierung in meinem Programm zu behandeln.

Ich möchte private Felder serialisiert werden (so XML Serializer ist keine Option) Ich möchte wie Bindinggenerische Typen serialisiert (SoapSerializer ist keine Option) Ich möchte auch eine gewisses Maß an Unterstützung bieten, um von früheren Versionen von meinem Programmobjekt in der Lage zu deserialisieren.

Also alles, was ich denke, ich bin mit links sind die BinarySerializer und die ISerializable Schnittstelle implementiert mit Vorwärtskompatibilität fertig zu werden.

Ist das richtig?

Hinweis: Ich muss sagen, dass ich dieses Projekt gefunden. Allerdings schien das Projekt tot, und ich konnte es nicht funktioniert (file missing Fehler) http://sourceforge.net/project/showfiles.php?group_id=196509

War es hilfreich?

Lösung

Mit BinaryFormatter, können Sie [OptionalField] , aber das ist sehr spröde .

Wie wäre es protobuf-net ? Ist das alles, und die Versionierung Probleme nicht mit BinaryFormatter zugeordnet. Da es auf Googles „Protokollpuffer“ Format basiert, ist es entwickelt Version tolerant und erweiterbar (Offenlegung: Ich bin der Autor, so kann ich voreingenommen sein) sein.

Alternativ DataContractSerializer unterstützt Feld Serialisierung; gerade gesetzt [DataMember] gegen Ihre Felder anstelle der Eigenschaften (benötigt .NET 3.0).

Andere Tipps

Ja, Sie müssen ISerializable implementieren.

Die wichtigsten Punkte der folgenden

sind
  • Implement GetObjectData (SerializationInfo info, Streaming Kontext). Hier müssen Sie Schlüsselpaare in Info-Objekt hinzuzufügen.
  • Implementieren Serialisierung Konstruktor MyClass (SerializationInfo info, Streaming Kontext). Hier müssen Sie würden die Werte aus dem Info-Objekt erhalten.
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top