title: ObservableCollection wrapper to cast to a base type
body: <p>I have a class called <code>Client</code>, which is a subclass of <code>Configurable</code>. </p>
  
  <p>I have an <code>ObservableCollection&lt;Client&gt;</code> which I need to view as an <code>ObservableCollection&lt;Configurable&gt;</code>.  This will allow me to databind to the list from some general layout generation code.  It must also allow me to clear the list, and to add items to the list.  Of course, when adding items to the list it must do a runtime type check to verify the general item (<code>Configurable</code>) being added is of the appropriate type (<code>Client</code>).</p>
  
  <p>I am imagining a class called something like <code>ObservableSurrogateCollection&lt;T&gt;</code>.  <code>T</code> is the general class (<code>Configurable</code>).  You would construct it by handing it an <code>ObservableCollection&lt;T2&gt;</code>, where <code>T2</code> is a subclass of <code>T</code>.  You can databind to it, and all collection changed events on the wrapped list are correctly routed (both directions).  </p>
  
  <p>Does this exists?  Is this not something I should be doing?  I think I read that .NET 4.0 will support such a feature at the language level?</p>
  
  <p>I have looked at these options:</p>
  
  <ul>
  <li><code>ReadOnlyObservableCollection&lt;T&gt;</code>.  This is really close.  However, because it is read-only I can't add or clear the items.  </li>
  <li>A non-generic <code>ObservableCollection</code>.  I can't seem to find this, if it exists.  </li>
  </ul>
  
  <p>Thanks in advance for any help!</p>