在没有继承的情况下从xsd模式生成类

本文关键字:模式 xsd 情况下 继承 | 更新日期: 2023-09-27 17:59:06

我有一系列相当复杂的xsd模式文件,我想用它们创建c#类。我在Visual Studio 8中使用了xsd.exe,并且类生成得很好。但是,我希望绕过继承,这意味着任何类都不应该从父类继承。

我需要这个,因为我创建了一个Web服务,将这些类作为Web服务方法的参数。web服务的wsdl为这些子类生成标记。据我所知,SAP在创建web服务客户端时不接受扩展标记。因此,我需要解决这个问题。

非常感谢您的帮助。

在没有继承的情况下从xsd模式生成类

XMLSchema允许通过xs:extension元素进行继承,该元素允许您修改基本complexType。当将这个XMLSchema映射到C#(或Java)时,将其映射到类继承是有意义的。

因此,我想,当遇到xs:extension时,您想做的不是映射到继承层次结构,而是将扩展属性复制到生成的类上,即将所有超类方法都带到子类中。我非常怀疑你是否会找到一个可以选择的工具,这是一个相当模糊的要求!

就我个人而言,我会通过将XML模式转换为您想要的结构,然后使用Schema-to-C#工具来解决这个问题。用于这种转换的合适技术是XSLT。但是,您可以使用Linq-to-XML或其他XML操作API编写自己的工具。