У меня есть следующие настройки двух классов:
[SerializableAttribute]
public class ParentData{
[DataMember]
public string Title{get;set;}
}
[DataContract]
public class ChildData : ParentData{
[DataMember]
public string Abstract{get;set;}
}
Эти два класса обслуживаются службой WCF. Однако я хочу, чтобы служба предоставляла класс ChildData только конечному пользователю, но извлекала размеченные свойства DataMember из родительского объекта. Например. У потребляющего клиента был бы класс заглушки, который выглядел бы так:
public class ChildData{
public string Title{get;set;}
public string Abstract{get;set;}
}
Если я использую родительский и дочерний классы, как указано выше, класс-заглушка содержит только свойство Abstract.
Я рассмотрел использование атрибута KnownType в классе ChildData следующим образом:
[DataContract]
[KnownType(typeOf(ParentData)]
public class ChildData : ParentData{
[DataMember]
public string Abstract{get;set;}
}
Однако это не сработало.
Затем я применил атрибут DataContract к классу ParentData, однако тогда в клиентском приложении создаются два класса-заглушки, которые мне не нужны.
Есть ли способ сообщить сериализатору, что он должен сгладить наследование с наследством подкласса, т.е. ChildData