У меня есть следующие настройки двух классов:WCF и Наследование объекта
[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;}
}
Если я использую родительские и дочерние классы, как описаны выше класс заглушки содержит только абстрактные свойства.
Я посмотрел на использование атрибута KnownType на классе ChildData так:
[DataContract]
[KnownType(typeOf(ParentData)]
public class ChildData : ParentData{
[DataMember]
public string Abstract{get;set;}
}
Однако это не сработало.
Затем я применил атрибут DataContract к классу ParentData, однако затем он создает два класса-заглушки в клиентском приложении, которые я не хочу.
Есть ли способ сказать сериалайзер, что она должна сглаживаться наследство, что и суб-класса т.е. ChildData
Возможный дубликат [Есть ли способ скрыть/свернуть базовые типы в контрактах данных службы WCF?] (Http://stackoverflow.com/questions/3499788/is-there-any-way-to-hide-flatten -base-types-in-wcf-service-data-контракты) –