Wenn ich eine Klasse mit DataContractSerializer
serialisieren und später deserialisieren möchte, wie kann ich dann die Anfangswerte von Eigenschaften steuern, die nicht serialisiert wurden?
Betrachten Sie die Klasse Person
unten. Der Datenvertrag ist so eingestellt, dass die Eigenschaften FirstName
und LastName
serialisiert werden, nicht jedoch die Eigenschaft IsNew
. Ich möchte IsNew
auf TRUE initialisieren, ob eine neue Person als neue Instanz instanziiert oder aus einer Datei deserialisiert wird.
Dies ist leicht über den Konstruktor möglich, aber wie ich es verstehe, ruft DataContractSerializer
den Konstruktor nicht auf, da sie Parameter benötigen könnten.
Sie können einen Serialisierungsrückruf verwenden. Fügen Sie Ihrer Personenklasse die folgende Methode hinzu:
%Vor%Eine weitere Option besteht darin, die Attribute [DataContract] und [DataMember] zu entfernen. In diesem Fall ruft DCSerializer Ihren Konstruktor bei der Deserialisierung auf.
Tags und Links .net c# initialization datacontractserializer default-value