4

1つの操作を公開する単純なWCFアプリケーションを作成しました。この操作は、複合データ型をパラメーターとして受け取ります。

この複合データ型を[DataContract]属性で装飾していません。しかし、これは機能しており、WSDLでこのスキーマを確認できます。

私の理解では、この新しいカスタムタイプは、Webサービス操作に参加するために[Serializable]または[dataContract]属性で装飾する必要があります。

私がここで欠けているものは何ですか?

4

2 に答える 2

13

POCOサポートは.NET3.5SP1以降WCFで導入されており、オブジェクトを属性で装飾する必要がなくなりました。パブリックプロパティは自動的に公開されます。これらの属性で明示的にマークすることをお勧めしますが。[DataContract][DataMember]

于 2010-07-20T14:44:40.143 に答える
5

ダリンが言うように、sp1は推測されたデータコントラクトのサポートを導入しました。マーシャリングされたタイプがパブリックタイプであり、DataContract属性で装飾されていない場合、WCFはそのような属性を自動的に推測しDataMemeber、そのタイプのすべてのパブリックメンバーに属性を適用します。

彼の著書「ProgrammingWCFServices」の中で、JuvalLöwyは次のように述べています。

私の意見では、推測されたデータコントラクトに依存することは、WCFの他のほとんどすべての粒子に反するずさんなハックです。... DataContract属性を使用し、データコントラクトについて明示してください。これにより、バージョン管理などのデータコントラクト機能を利用できるようになります。

于 2010-07-20T14:50:21.633 に答える