2009-06-18 8 views
4

Ich möchte ein POCO [Serializable], aber keine anderen Klassenmitglieder in seiner Klassenhierarchie Baum machen. Ich weiß, dass [NonSerialized] nur für Felder funktioniert, aber gibt es eine Möglichkeit, sie auszuschließen oder bestimmte Mitglieder mit [Serializable] auf dem POCO zu wählen?Serialisierung von POCO ohne Klassenmitglieder

Antwort

4

Sie sollten sich die DataContractSerializer ansehen; Es verwendet einen "Opt-In" -Ansatz für die Serialisierung.

Auch wäre es eine gute Idee sein XmlSerializer vs DataContractSerializer: Serialization in Wcf auf Beispiele und ein Vergleich zwischen DataContractSerializer und XmlSerializer zu lesen.

Die XmlSerializer 1.0 in .Net seit Version gewesen und hat uns bedient gut für alles von Remoting Web Services in eine Datei Serialisierung usw. jedoch in .NET 3.0 die DataContractSerializer kam . Und plötzlich schlägt eine Menge Anleitung vor, dass wir es über den alten bewährten XmlSerializer verwenden sollten. Wcf verwendet dies sogar als Standard Mechanismus für die Serialisierung. Die Frage ist: "Ist es wirklich besser?". Das Urteil ist ja, und nein. Wie die meisten Dinge hängt es von Ihrer Implementierung und was Sie brauchen. Für Wcf sollten Sie lieber den DataContractSerializer verwenden. Wenn Sie volle Kontrolle darüber haben, wie die XML aussieht, sollten Sie zurück zum XmlSerializer gehen.

+0

Gute Antwort (ich habe meine gelöscht) - nur um hinzuzufügen (für das OP): Wenn Sie enge binäre Serialisierung wollen, könnten Sie protobuf-net in Betracht ziehen. –

+0

@Marc - Protobuf-Net ist auch eine gute Wahl und eine eigene Antwort wert. Wenn Sie Ihre Antwort wiederherstellen, werde ich sie aktualisieren. –