0

C#で実装するXML呼び出しが5つあります。Xsd2Codeを使用してコードを自動生成しましたが、結果には非常に満足しています。ただし、私の問題は、次のように、すべてのXML呼び出しに同じ要求応答TypeNameがあることです。

XML呼び出し-1:

<Request Method="AvailabilityRetrievalRQ">
....
</Request>

<Response Method="AvailabilityRetrievalRS">
....
</Response>

XML呼び出し-2:

<Request Method="RateRetrievalRQ">
.....
</Request>

<Response Method="RateRetrievalRS">
....
</Response>

したがって、5つのXML呼び出しすべてが10のクラスを生成しました。5つは「Request」という名前で、5つは「Response」という名前です。これで、XmlTypeのTypeNameをいつでもRequestとして指定し、クラスの名前を変更できることがわかりました。私はすでにそれをしました。私の質問は、自動生成されたコードを変更するのが良いかどうかです。クラスの名前を変更するだけです。他に何も変更する必要はありません。私が考えたもう1つの解決策は、各Request-Responseペアに異なるC#名前空間を与えることです。しかし、私はそれについて悪い気持ちを持っており、回避策のように見えます。

あなたによると、理想的な解決策は何ですか?

もう1つの疑問は、内部XMLノードにも同じ問題があることです。それらは同じ名前ですが、すべてのXML呼び出しで機能性が異なり、したがって構造も異なります。例えば、

XML呼び出し-1

<Request Method="AvailabilityRetrievalRQ">
   <Room ID="XXX" />
   .....
</Request>

XML呼び出し-2

<Request Method="RateRetrievalRQ">
   <Room ID="XXX" ProductID="YYY" />
   ....
</Request>

今のところ、コードの冗長性を減らすためだけに、一般的なクラスを削除しようとしないことにしました。XSDスキーマを自動生成されたクラスにマップしたままにし、競合を避けるためにクラスの名前を変更することをお勧めします。たとえば、上記の例に類似したRoomクラスは次のようになります。

XML呼び出し-1

public partial class AvailabilityRetrievalRQ_Room { }

XML呼び出し-2

public partial class RateRetrievalRQ_Room { }

私はその中で間違っていますか?

4

1 に答える 1

0

使用中にコードが読みやすくなるように、クラスの名前を変更することにしました。名前空間のアプローチは十分ではなく、適切に機能しているようには見えませんでした。スキーマからクラスを再生成する必要がある場合に備えて、これを再度実行するという苦痛に耐えます。

于 2012-07-05T11:09:27.543 に答える