以下概念是否可行,或者我将此序列化到客户端时遇到问题。假设所有通信仅处理BaseContractClasses,但服务器使用特殊子类来整理额外的服务器数据。
[DataContract]
public class BaseContractClass
{
[DataMember]
public int valueToTransmit;
}
public class ServiceOnlyContractClass : BaseContractClass
{
public int valueNotToTransmit;
}
答案 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