0

[DataContract]属性について質問です。

以下のようにコードを書きました。ここでは[DataContract]、テスト クラスに属性を使用していません。

    class test
    {
      [Datamember]
       public string Strproperty
        {
          get;
          set;
        }
       [Datamemer]
       public string Strproperty2
        {
          get;
          set;
        }
    }


 class checktotal:Iservice
    {
    public string testmethod(test obj)
       {
           return obj.Strproperty+Strproperty2;
       }
    }

そのために、クライアントからデータを送信していますが、値を正しく取得しています。

[DataContract]そのテストクラスに属性を使用する必要がありますか?

テストクラスのプロパティを削除[Datamember]すると、クライアントからの送信中にエラーが発生します。[DataContract]しかし、属性を使用していなくてもエラーは発生しません。

その属性をいつ付与し、いつその属性を付与しないかを理解できるように、例を挙げて簡単に説明してください。

ありがとう、サティア・プラタップ。

4

2 に答える 2

1

.NET 3.5 Service Pack 1[DataContract]の時点では、および[DataMember]属性を省略 (使用しない) できます。これを行うと、DataContractSerializerWCF の は XML シリアライザーと同じように動作し、すべてのパブリック プロパティのみをシリアル化します。

[DataContract]とにかくand を明示的に使用することを好みます[DataMember]。これにより、オプション (データ コントラクトの XML 名前空間、 の順序など[DataMember]) を指定する機会が得られ、たとえば特定のプロパティをシリアル化から除外することもできます。

[DataMember]1 つのプロパティで使用を開始するとすぐに、で装飾されたプロパティのみ[DataMember]が WCF シリアル化のために調べられます。

于 2013-08-28T12:13:16.290 に答える