title: How to implement "class versioning" (using different version of the same class)
body: <p>Here is the problem : our main class (say : Contract) change every year. Some properties are added, other are removed. We don't know how it will look next year. It may change a lot or not at all.</p>
  
  <p>On the other hand, we now (new requirement...) have to keep an historic of every contracts. Each time the user update a contract, the whole object must be stored in a backup (e.g. - serialized in a table).</p>
  
  <p>Of course, we must be able to read it back... One option (brutal) is to have a new Contract class every year (Contract2008, Contract2009, ...).</p>
  
  <p>But it would be very cumbersome (and ugly) since a lot of classes depend on Contract - in facts, we would have to create a bunch of new classes every year.</p>
  
  <p>Ever have this kind of problem ? Any suggestion ?</p>
  
  <p>Thanks in advance !</p>
  
  <p>(We're using C# 2.0.)</p>
  
  <p>ADDED : Thank for your answers. We're now asking ourself how we could use a dictionary / an XML file to implement versioning without breaking all the code. Dictionary seems very sexy in this context :o)</p>