Desserialização do .NET com OnDeserializing e OnDeserialized

Eu uso uma classe simples que é serializável. Tem um construtor para a desserialização:

protected MyClass(SerializationInfo info, StreamingContext context)

e um método GetObjectData para serialização. Funciona bem.

Agora eu adicionei dois métodos para monitorar a desserialização:

        [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());
    }

e queria saber em qual ordem esses métodos estão sendo chamados. Agora ambos os métodos são chamados antes do construtor ser chamado. Como isso é possível, e por que o método "OnDeserialized" não é chamado após o construtor (deserialization-) ter sido chamado? E como um método (não estático) pode ser chamado antes de qualquer construtor ser executado? (Estou usando um BinaryFormatter)

questionAnswers(3)

yourAnswerToTheQuestion