2011-01-27 3 views
0

私のすべてのパブリックプロパティから[DataMember]属性を削除しましたが、プロパティはまだ私のWCF操作の結果に表示されています。このリンクhereは、.Netがワイヤの両端にある場合、DataMemberはDataContractにどのようなプロパティが含まれているかを判断する効果がほとんどありません。DataContractからパブリックプロパティを非表示

したがって、パブリックプロパティをWCF結果に含めることをどのように除外しますか?

おかげ

+1

属性IgnoreDataMember? – vorrtex

答えて

1

WCFでの連載が動作することができますいくつかの異なる方法があります。彼らはhereの輪郭を描いています。 [Serializable]クラスも使用できることに注意してください。

このリストの最後の項目に注意してください。3.5 SP1以降、任意のオプションで注釈が付けられていないクラスは、WCFインフラストラクチャによって引き続きシリアル化可能です。しかし、それを行うと、シリアライズの仕方やシリアル化されるプロパティを制御する方法がないままになります(これは私が個人的にオプションを追加する間違いだと感じた理由ですが、別の話です)。

[DataContract] [DataMember]属性を削除した理由はありますか?

+0

[DataContract] [DataMember]属性を削除して、何が起こるかをテストしました。私は、彼らにはどのような特性が含まれているかをコントロールできないことに失望しています。では、WCFを使用してパブリックプロパティをシリアル化することをどのように除外しますか?応答していただきありがとうございます。 –

+0

まあ、[Serializable] + [NonSerializable]を使うか、明示的に[DataContract] + [DataMember]を使うことができます。 [DataContract]を回避しようとするべきではない非常に大きな理由の1つは、契約のフィールドの順序を明示的に制御する方法を提供することです([DataMember]のOrderプロパティを介して) (WCFの既定の順序は宣言の順序ではなくアルファベット順であるため) – tomasr

関連する問題