Deserializacja .NET z OnDeserializing i OnDeserialized
Używam prostej klasy, którą można serializować. Ma konstruktora do deserializacji:
protected MyClass(SerializationInfo info, StreamingContext context)
oraz metoda GetObjectData do serializacji. To działa dobrze.
Teraz dodałem dwie metody monitorowania deserii:
[OnDeserializing()]
internal void OnDeserializingMethod(StreamingContext context)
{
System.Diagnostics.Trace.WriteLine("OnDeserializingMethod: " + this.GetType().ToString());
}
[OnDeserialized()]
internal void OnDeserializedMethod(StreamingContext context)
{
System.Diagnostics.Trace.WriteLine("OnDeserializedMethod: " + this.GetType().ToString());
}
i zastanawiał się, w jakiej kolejności nazywa się te metody. Teraz obie metody są wywoływane przed wywołaniem konstruktora. Jak to możliwe i dlaczego nie nazywa się metody „OnDeserialized” po wywołaniu konstruktora (deserializacji)? A jak można wywołać (niestatyczną) metodę przed wykonaniem dowolnego konstruktora? (Używam BinaryFormatter)