修改从XSD架构生成的代码

时间:2012-06-29 12:21:46

标签: c# .net xml xsd xsd2code

我在C#中实现了5个XML调用。 我使用Xsd2Code自动生成代码,我对结果非常满意。 但问题是,所有XML调用都具有相同的请求响应TypeName,如下所示:

XML Call - 1:

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

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

XML Call - 2:

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

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

因此,所有5个XML调用都生成了10个类--5个名为“Request”,5个名为“Response”。 现在,我知道我总是可以将XmlType中的TypeName指定为Request,并重命名这些类。我已经这样做了。 我的问题是,改变自动生成的代码是否合适。它只是重命名类。我没有要求改变其他任何东西。 我想到的另一个解决方案是为每个Request-Response对赋予C#名称空间差异。但我对此感觉不好,似乎更像是一种解决方法。

根据您的说法,什么是理想的解决方案?

另一个疑问是我对内部XML节点有同样的问题。它们在每个XML调用中具有相同的名称,但具有不同的功能,因此具有不同的结构。例如,

XML Call - 1

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

XML Call - 2

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

现在,我已决定不再尝试删除常用类以减少代码冗余。我更喜欢将XSD架构与自动生成的类映射,只是重命名这些类以避免任何冲突。例如,上例中的类似Room类将是:

XML Call - 1

public partial class AvailabilityRetrievalRQ_Room { }

XML Call - 2

public partial class RateRetrievalRQ_Room { }

我做错了吗?

1 个答案:

答案 0 :(得分:0)

我决定重命名这些类,以便在使用它们时代码变得可读。名称空间方法看起来不够用,也不适合。如果我需要从模式中重新生成类,我将承担再次这样做的痛苦。