1

WCF 3.5 サービスでこのようなメソッド シグネチャを使用することは可能ですか (Offer は DataContractAttribute と DataMemberAttribute を持つカスタム クラスです)。

[OperationContract]
[WebGet(UriTemplate = "GetOffers", ResponseFormat = WebMessageFormat.Json, BodyStyle = WebMessageBodyStyle.Bare)]
IList<Offer> GetOffers();

対応する URL を Web ブラウザーに入力すると、シリアル化エラーが発生するためです (IList に Serializable 属性がないため、json シリアライザーがシリアル化できないためだと思います)。

回避策は、次のようなメソッド シグネチャを使用することです。

[OperationContract]
[WebGet(UriTemplate = "GetOffers", ResponseFormat = WebMessageFormat.Json, BodyStyle = WebMessageBodyStyle.Bare)]
List<Offer> GetOffers();

同じシリアル化された出力 (単純な json 配列) になりますが、最初のものは XML で動作するため、同じ署名を維持しながら json で動作させる方法があるかどうか疑問に思っていました。

編集:XMLシリアライゼーションでも動作しないため、動作は正常のようです。この署名を保持し、シリアライザーの動作を変更してこれを機能させることは可能ですか? どのように?

4

1 に答える 1

1

使用するハードコレクションタイプを既知のタイプのリストに追加する必要があると思います。概念的な説明についてはhttp://msdn.microsoft.com/en-us/library/ms730167.aspxを、サンプルについてはhttp://msdn.microsoft.com/en-us/library/ms751512.aspxを参照してください。非常によく書かれたMSDNMagazineの記事については、http://msdn.microsoft.com/en-us/magazine/gg598929.aspxを参照してください。

また、ここで上位2つの回答を参照してください。WCFの既知のタイプをプログラムでどのように構成しますか?

于 2011-02-08T04:46:58.230 に答える