Есть ли способ скрыть/сгладить типы базовых типов в контрактах с данными обслуживания WCF?
-
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>
Класс для сервиса таким образом, так каковы мои варианты?
- DTO для класса сотрудников - я бы не хотел добавить эту сложность
- «Удивление» иерархия обработки данных данных, так что договор данных для работника не раскрывает, что он наследует от
Base<T>
. Анкет Это возможно? Как? - Другое решение?
Спасибо.
Решение
Каждый класс в Hiearchy должен быть сериализуем / обработкой данных. Если вы не хотите выставлять Hiearchy, вы должны использовать DTO или попытаться реализовать IdataContractSuroggate для вашего класса сотрудников.
Не связан с StackOverflow