0

我有大约 5 个 XML 调用要在 C# 中实现。我使用 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,并重命名类。我已经这样做了。我的问题是更改自动生成的代码是否好。它只是重命名类。我不需要更改任何其他内容。我想到的另一个解决方案是为每个请求-响应对提供不同的 C# 命名空间。但我对此有一种不好的感觉,似乎更像是一种解决方法。

在您看来,理想的解决方案是什么?

另一个疑问是我对内部 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 回答