Я использую простой класс, который можно сериализовать. Он имеет конструктор для десериализации:
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)