使用WCF ResponseFormat = WebMessageFormat.Json时忽略类的属性

Jus*_*tin 4 c# wcf json

我使用这种格式使用WCF进行JSON服务:

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

这很有效,但它有一个限制.我不能忽略我正在序列化为JSON的类的属性.如果我使用JavaScriptSerializer类,那么我可以将[ScriptIgnore]属性放在我想忽略的属性上,并且它们不会在JSON中序列化,但是这不适用于上面的方法.

有没有办法使用ResponseFormat Json方法排除被序列化为JSON的类的属性?

car*_*ira 11

默认情况下,WCF使用DataContractJsonSerializer序列化对象.根据MyClass定义的方式,您可以使用不同的属性来阻止成员序列化:

  • 如果MyClass没有任何属性(即,它是"POCO"类型),则可以[IgnoreDataMember]在不希望序列化的成员中使用该属性
  • 如果MyClass被装饰[Serializable],您可以[NotSerialized]在这些成员中使用该属性
  • 如果MyClass被装饰[DataContract],那么您只需要添加 [DataMember]不需要序列化的成员.