IDeserializationCallback vs AtDeserializedAttribute

O ile rozumiem, interfejs IDeserializationCallback i zdarzenie OnDeserialized mogą być używane, gdy obiekt musi wykonać pewne zadanie po deserializacji.

IDeserializationCallback:

[Serializable]
public class Foo : IDeserializationCallback
{
    public void OnDeserialization(object sender)
    {
         // initialize unserialized fields etc.
    }
}

Zdarzenie OnDeserialized:

[Serializable]
public class Foo
{
    [OnDeserialized]
    public void OnDeserialized(StreamingContext context)
    {
         // initialize unserialized fields etc.
    }
}

Czy są jakieś konkretne plusy / minusy lub scenariusze, w których można wybrać jeden nad drugim?

questionAnswers(4)

yourAnswerToTheQuestion