Рассмотрим следующий простой пример:
[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
}
Базовый класс Base не имеет свойств, представляющих интерес для потребителей службы WCF, но WCF вынуждает меня также аннотировать базовый класс атрибутом [DataContract]. По сути, это отображается на клиенте службы как Employee : EmployeeBase
, где EmployeeBase
является пустым классом без свойств.
Я не хочу предоставлять сервису класс Base<T>
таким образом, каковы мои варианты?
- DTO для класса Employee - я бы не стал добавлять эту сложность
- «Сгладьте» иерархию DataContract, чтобы в контракте данных для Employee не было видно, что он наследуется от
Base<T>
. Это возможно? Как? - Другое решение?
Спасибо.