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)