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)

questionAnswers(3)

yourAnswerToTheQuestion