Создание сервисного подкласса класса WCF DataContract - PullRequest
0 голосов
/ 20 января 2010

Возможна ли следующая концепция или у меня возникнут проблемы с сериализацией этого для Клиента.Предполагая, что все соединения имеют дело только с BaseContractClasses, но Сервер использует специальный подкласс для сопоставления дополнительных данных только для сервера.

[DataContract]
public class BaseContractClass
{
  [DataMember]
  public int valueToTransmit;
}

public class ServiceOnlyContractClass : BaseContractClass
{
  public int valueNotToTransmit;
}

1 Ответ

0 голосов
/ 20 января 2010

Этот новый класс ServiceOnlyContractClass унаследует все поля и все от своего базового класса, но, поскольку у него нет атрибутов [DataContract] или [DataMember], он не будет отображаться в вашем контракте на обслуживание (WSDL)./ XSD).

Если это то, что вы хотите, да, это способ сделать это.Атрибуты DataContract и DataMember специфичны, например, вы должны явно установить их, и они не будут наследоваться производным классам.

ОБНОВЛЕНИЕ: .NET 3.5 с пакетом обновления 1 (SP1) представил новый наборправила для WCF DataContractSerializer, и он выглядит так, как будто какой-либо открытый класс и любые его открытые свойства будут сериализованы DCS начиная с .NET 3.5 SP1.Это было введено, чтобы упростить жизнь и позволить сериализацию классов POCO (Plain Old CLR Object) без их украшения атрибутами - но в то же время, кажется, нет способа отключить эту функцию, если вы не хотитеэто .....

Подробнее см. DataContracts без атрибутов

...