title: IDeserializationCallback vs OnDeserializedAttribute
body: <p>As far as I understand, the IDeserializationCallback interface and the OnDeserialized event can both be used when an object needs to perform some task after being deserialized.</p>
  
  <p>IDeserializationCallback:</p>
  
  <pre><code>[Serializable]
  public class Foo : IDeserializationCallback
  {
      public void OnDeserialization(object sender)
      {
           // initialize unserialized fields etc.
      }
  }
  </code></pre>
  
  <p>OnDeserialized event:</p>
  
  <pre><code>[Serializable]
  public class Foo
  {
      [OnDeserialized]
      public void OnDeserialized(StreamingContext context)
      {
           // initialize unserialized fields etc.
      }
  }
  </code></pre>
  
  <p>Are there any specific pros/cons or scenarios where you would choose one over the other?</p>