Deserialización de .NET con OnDeserializing y OnDeserialized
Yo uso una clase simple que es serializable. Cuenta con un constructor para la deserialización:
protected MyClass(SerializationInfo info, StreamingContext context)
y un método GetObjectData para la serialización. Funciona bien.
Ahora agregué dos métodos para monitorear la deserialización:
[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());
}
y me preguntaba en qué orden se llaman estos métodos. Ahora ambos métodos son llamados antes que el constructor sea llamado. ¿Cómo es eso posible, y por qué no se llama al método "OnDeserialized" después de que se haya llamado al constructor (deserialización)? ¿Y cómo se puede llamar a un método (no estático) antes de ejecutar cualquier constructor? (Estoy usando un BinaryFormatter)