title: How to replace a legacy class with a new ISerializable class
body: <p>We have a legacy class <code>A</code> which is <code>[Serializable]</code>, but not <code>ISerializable</code>.
  For miscellaneous reasons, this class has to be patched to implement ISerializable.</p>
  
  <p>The problem is that we still need to be able to load old save files, which used .NET's default implementation for serialization of class <code>A</code>.
  In other words, when loading old savefiles, class <code>A</code> must be deserialized like the old version and then be converted to the new version of class <code>A</code>, such that when saving again, our new implementation of <code>ISerializable</code> is used. </p>
  
  <p>What is the most decent way to patch class <code>A</code> without breaking backward compatibility?</p>