2011-10-19 5 views
4

を使用しているとき、私はこのフォーマットを使用してJSONサービスにWCFを使用しているクラスのプロパティを無視:WCF ResponseFormat = WebMessageFormat.Json

[OperationContract] 
[ServiceKnownType(typeof(ComplexResult))] 
[WebInvoke(
      Method = "GET", 
      BodyStyle = WebMessageBodyStyle.Bare, 
      ResponseFormat = WebMessageFormat.Json)] 
MyClass MyFunction(string myParams); 

これは素晴らしい作品、しかし、それは制限があります。 JSONにシリアル化しているクラスのプロパティは無視できません。 JavaScriptSerializerクラスを使用すると、無視するプロパティに[ScriptIgnore]属性を追加できますが、JSONでシリアル化されませんが、これは上記のメソッドでは機能しません。

ResponseFormat Jsonメソッドを使用してJSONにシリアル化されるクラスのプロパティを除外する方法はありますか?

答えて

10

デフォルトでは、WCFはDataContractJsonSerializerを使用してオブジェクトをシリアル化します。 MyClassが定義されている方法に応じて、あなたが連載されてからメンバーを防ぐために、異なる属性を使用することができます。

  • をMyClassのは、(すなわち、それは「POCO」タイプだ)任意の属性を持っていない場合は、[IgnoreDataMember]属性を使用することができますメンバーにあなたはMyClassのは[Serializable]で飾られている場合は、MyClassのは[DataContract]で飾られている場合は、あなただけに[DataMember]を追加しないに必要
  • それらのメンバーに[NotSerialized]属性を使用することができます
  • シリアライズさを望んでいませんあなたが連載したくないメンバー。
+1

ありがとう、ありがとう! – Justin

関連する問題