Десериализация .NET с OnDeserializing и OnDeserialized

Я использую простой класс, который сериализуем. У него есть конструктор для десериализации:

protected MyClass(SerializationInfo info, StreamingContext context)

и метод GetObjectData для сериализации. Работает нормально.

Теперь я добавил два метода для мониторинга десериализации:

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

и задавался вопросом, в каком порядке называются эти методы. Теперь оба метода вызываются до вызова конструктора. Как это возможно, и почему метод OnDeserialized не вызывается после вызова конструктора (deserialization-)? И как (нестатический) метод может быть вызван перед выполнением любого конструктора? (Я использую BinaryFormatter)

Ответы на вопрос(3)

Ваш ответ на вопрос