创建WCF DataContract类的仅服务子类

时间:2010-01-20 05:28:48

标签: wcf serialization casting subclass datacontract

以下概念是否可行,或者我将此序列化到客户端时遇到问题。假设所有通信仅处理BaseContractClasses,但服务器使用特殊子类来整理额外的服务器数据。

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

public class ServiceOnlyContractClass : BaseContractClass
{
  public int valueNotToTransmit;
}

1 个答案:

答案 0 :(得分:0)

这个新类ServiceOnlyContractClass将继承其基类中的所有字段和所有内容,但由于它没有任何[DataContract]或[DataMember]属性,因此它不会显示在您的服务合同中( WSDL / XSD)。

如果那就是你想要的,是的,那就是这样做的方式。 DataContract和DataMember属性是特定的,例如你必须明确地设置它们,它们不会被继承到派生类。

更新: .NET 3.5 Service Pack 1为WCF DataContractSerializer引入了一组新规则,看起来任何公共类及其任何公共属性都将被DCS序列化为.NET 3.5 SP1。这是为了简化生活并允许POCO(普通旧CLR对象)类的序列化而不用属性来修饰它们而引入的 - 但同时,如果你不想要的话,似乎没有办法关闭它的功能它.....

有关详细信息,请参阅DataContracts without attributes