title: Deserialization backwards compatibility
body: <p>I am trying to deserialize "SomeClass" with an older version of an application. I get this below exception</p>
  
  <blockquote>
    <p>System.Runtime.Serialization.SerializationException: The ObjectManager found an invalid number of fixups. This usually indicates a problem in the Formatter.</p>
  </blockquote>
  
  <p>Deserialization throws exception when I <strong>serialize version 0.9</strong> and try to <strong>deserialize using version 0.8</strong>. I thought the <code>OptionalField</code> attribute would do the trick, but it didn't.</p>
  
  <pre><code>// Version 0.8
  [Serializable()]
  class Foo{
    Bar b;
  } 
  
  // Version 0.9
  [Serializable()]
  class Foo{
    Bar b;
    [OptionalField]
    Zoo z;
  }
  </code></pre>
  
  <p>Given that I cannot change version 0.8, how should I add more state to Foo object such that previous versions can deserialize whatever they can?</p>
  
  <p>Any pointer will be really appreciated.</p>
  
  <p><b>Update 1</b>
  Bar and Zoo are other classes which are serializable and contains Hashtables and other serializable stuff. Everything is serializable in those classes.
  Also, I don't have any struts.</p>