title: Is there any way to hide/flatten base types in WCF service data contracts?
body: <p>Consider the following simple example:</p>
  
  <pre><code>[DataContract("{0}Base")]
  public class Base&lt;T&gt; where T : Entity&lt;T&gt;
  {
      // Common methods &amp; properties.  No WCF exposed properties
  }
  
  [DataContract]
  public class Employee : Base&lt;Employee&gt;
  {
      // WCF exposed properties
  }
  </code></pre>
  
  <p>The base class Base has no properties of interest to the WCF service consumers, but WCF forces me to also annotate the Base class with a [DataContract] attribute.  This essentially shows up on the service client as <code>Employee : EmployeeBase</code> with <code>EmployeeBase</code> being an empty class with no properties.</p>
  
  <p>I do not want to expose the <code>Base&lt;T&gt;</code> class to the service in this way, so what are my options?</p>
  
  <ol>
  <li>DTO for the Employee class - I'd rather not add this complexity</li>
  <li>"Flatten" the DataContract hierarchy so that the data contract for Employee does not expose that it inherits from <code>Base&lt;T&gt;</code>.  Is this possible?  How?</li>
  <li>Other solution?</li>
  </ol>
  
  <p>Thanks.</p>