0

次の概念は可能ですか、それともこれをクライアントにシリアル化するのに問題がありますか? すべての通信は BaseContractClasses のみを扱っているが、サーバーは特殊なサブクラスを使用して追加のサーバーのみのデータを照合すると仮定します。

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

public class ServiceOnlyContractClass : BaseContractClass
{
  public int valueNotToTransmit;
}
4

1 に答える 1

0

この新しいクラスServiceOnlyContractClassは、その基本クラスからすべてのフィールドとすべてを継承しますが、[DataContract] または [DataMember] 属性を持たないため、サービス コントラクト (WSDL/XSD) には表示されません。

それがあなたが望むものなら、はい、それはそれを行う方法です. DataContract および DataMember 属性は固有です。たとえば、明示的に設定する必要があり、派生クラスには継承されません。

更新: .NET 3.5 Service Pack 1 では、WCF DataContractSerializer の新しいルール セットが導入され、.NET 3.5 SP1 の時点で、パブリック クラスとそのパブリック プロパティが DCS によってシリアル化されるように見えます。これは、生活を簡素化し、POCO (Plain Old CLR Object) クラスを属性で装飾せずにシリアル化できるようにするために導入されましたが、同時に、不要な場合にその機能をオフにする方法はないようです。それ.....

詳細については、属性のない DataContracts を参照してください

于 2010-01-20T06:14:22.673 に答える