Consider the following simple example:
[DataContract("{0}Base")]
public class Base<T> where T : Entity<T>
{
    // Common methods & properties.  No WCF exposed properties
}
[DataContract]
public class Employee : Base<Employee>
{
    // WCF exposed properties
}
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 Employee : EmployeeBase with EmployeeBase being an empty class with no properties.
I do not want to expose the Base<T> class to the service in this way, so what are my options?
- DTO for the Employee class - I'd rather not add this complexity
- "Flatten" the DataContract hierarchy so that the data contract for Employee does not expose that it inherits from Base<T>. Is this possible? How?
- Other solution?
Thanks.