2

私はWCFを初めて使用し、簡単な質問があります...

私のDataContractクラスは、公開されているメソッドの1つからコンシューマーに列挙型を返します。

コンシューマーは、列挙型を確認し、その型の変数をインスタンス化できます。

ただし、サービスの列挙型に[DataContract]も[EnumMember]も提供していません。

私の質問は、なぜクライアントはまだそれを見ることができるのですか?ビジネスオブジェクトと一緒にシリアル化するには、[DataContract]にする必要があると思いました。

4

2 に答える 2

1

はい-必要がありました-.NET3.5SP1まで。

Microsoftはルールを「緩め」、属性を何も設定しない場合は、DataContractSerializerのように動作するようになります。すべてのパブリックプロパティと必要なタイプをシリアル化するだけです。XmlSerializer[DataContract][DataMember]

これは単純なシナリオでは「より単純な」アプローチかもしれませんが、名前空間や順序などの制御も大幅に失われるため、意図を明確に表現(および文書化)するために、これらの属性を明示的に適用することをお勧めします。ただし、.NET 3.5 SP1では、.NET 3.5 SP1は不要になり、強制されなくなりましたDataContractSerializer

于 2010-05-13T09:14:13.393 に答える
0

[DataContract]属性と[DataMember]属性を何にも設定しない場合、すべてのパブリックプロパティと必要なタイプが自動的にシリアル化されます。この機能は、.NET3.5SP1の上位バージョンでサポートされています。

于 2018-05-29T10:25:22.770 に答える