2009-05-28 1 views
2

Ich habe ein [ohne Seriennummer] Feld in meiner Klasse, die Inline initialisiert wird:C# [NonSerialized] Feld mit Inline-Initialisierung nach der Deserialisierung nicht initialisiert

[NonSerialized] 
private bool running = true; 

Doch nach Deserialisieren ein Objekt Ich habe laufen == falsch. Das ist nicht was ich will. Kann ich die Inline-Initialisierung für alle [NonSerialized] -Felder erzwingen? Sonst muss ich ISerializable implementieren ...

+0

Dies passiert, weil der Deserialisierungsprozess ein neues nicht initialisiertes Objekt Ihres Typs erstellt, ohne Konstruktoren aufzurufen. – sisve

Antwort

3

Sie können es im Standardkonstruktor festlegen.

Umsetzung des System.Runtime.Serialization.IDeserializationCallback

Es heißt afther das Objekt deserialisiert wird, so dass Sie Ihre persönliche Initialisierung dort ausführen können.

+0

Funktioniert nicht. Soweit ich verstehe, implementiert eine Klasse mit [Serializable] -Attribut implizit einen Konstruktor mit einer speziellen Signatur, die bei der Deserialisierung aufgerufen wird. –

+0

Ok, versuchen Sie die andere Lösung :) – Stormenet

+0

Danke, das ist genau das, was ich gesucht habe! –

Verwandte Themen