8

サードパーティのRESTAPIを使用するためのAPIラッパークラスライブラリを作成しました。

製品の最新バージョンでAPIを最近更新し、ルート要素に名前空間を追加するまではすべて機能していましたが、現在、逆シリアル化コードは失敗しています。

私のクラスの1つの例:

[Serializable]
[XmlRootAttribute(ElementName = "exit_survey_list")]
public class SupportExitSurveyCollection : ApiResult { .... }

XmlRootAttributeのNamespaceプロパティを、返される新しい名前空間に設定すると、再び正しく機能します。

ただし、どちらのバージョンのAPIが使用可能になるかわからないため、両方のバージョンのAPI(名前空間とそうでない)をサポートする必要があります。

異なるバージョンのクラスを複製せずにこれを機能させたいのですが、それが可能かどうかはわかりません。

入力/アドバイスをありがとう。

4

1 に答える 1

2

それは不可能だと思います。

IXmlSerializableインターフェイスを実装し、シリアル化を自分で制御することもできます。これは機能しますが、コードで多くのマッピングを自分で行う必要があるため、おそらく希望どおりではありません。

もう1つのオプションは、メッセージを前処理し、名前空間が欠落している場合は追加することです。次に、単一の逆シリアル化プロセスを実行できます。

于 2011-02-11T17:54:08.113 に答える