Есть ли способ скрыть/сгладить типы базовых типов в контрактах с данными обслуживания WCF?

StackOverflow https://stackoverflow.com/questions/3499788

  •  29-09-2019
  •  | 
  •  

Вопрос

Рассмотрим следующий простой пример:

[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
}

База базового класса не имеет никаких свойств интереса к потребителям службы WCF, но WCF заставляет меня также аннотировать базовый класс с атрибутом [DataContratt]. Это по существу проявляется на обслуживающем клиенте как Employee : EmployeeBase с EmployeeBase Быть пустым классом без свойств.

Я не хочу выставлять Base<T> Класс для сервиса таким образом, так каковы мои варианты?

  1. DTO для класса сотрудников - я бы не хотел добавить эту сложность
  2. «Удивление» иерархия обработки данных данных, так что договор данных для работника не раскрывает, что он наследует от Base<T>. Анкет Это возможно? Как?
  3. Другое решение?

Спасибо.

Это было полезно?

Решение

Каждый класс в Hiearchy должен быть сериализуем / обработкой данных. Если вы не хотите выставлять Hiearchy, вы должны использовать DTO или попытаться реализовать IdataContractSuroggate для вашего класса сотрудников.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top