是否可以在 WCF 3.5 服务中具有这样的方法签名(Offer 是具有 DataContractAttribute 和 DataMemberAttribute 的自定义类):
[OperationContract]
[WebGet(UriTemplate = "GetOffers", ResponseFormat = WebMessageFormat.Json, BodyStyle = WebMessageBodyStyle.Bare)]
IList<Offer> GetOffers();
因为如果我在网络浏览器中输入相应的 URL,我会收到一个序列化错误(我认为这是因为 IList 没有 Serializable 属性,所以 json 序列化程序无法序列化它)。
解决方法是使用这样的方法签名:
[OperationContract]
[WebGet(UriTemplate = "GetOffers", ResponseFormat = WebMessageFormat.Json, BodyStyle = WebMessageBodyStyle.Bare)]
List<Offer> GetOffers();
导致相同的序列化输出(一个简单的 json 数组),但由于第一个使用 XML,我想知道是否有办法让它在 json 中工作,保持相同的签名。
编辑:好的,它也不适用于 XML 序列化,所以行为似乎是正常的。问题仍然存在,是否可以保留此签名并更改序列化程序行为以使其工作?如何?