C# 从xsd模式生成不带继承性的类

C# 从xsd模式生成不带继承性的类,c#,web-services,xsd,wsdl,sap,C#,Web Services,Xsd,Wsdl,Sap,我有一系列相当复杂的xsd模式文件,我想用它们创建c#类。我在VisualStudio8中使用xsd.exe,生成的类很好。但是,我想绕过继承,这意味着任何类都不应从父类继承 我之所以需要它,是因为我创建了一个Web服务,将这些类作为Web服务方法的参数。web服务的wsdl为这些子类生成标记。据我所知,SAP在创建web服务客户端时不接受扩展标记。因此,我需要一个解决办法 非常感谢您的帮助。XML模式允许通过xs:extension元素继承,该元素允许您修改基本complexType。将此XM

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

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


非常感谢您的帮助。

XML模式允许通过
xs:extension
元素继承,该元素允许您修改基本
complexType
。将此XML模式映射到C#(或Java)时,将其映射到类继承是有意义的

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


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

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

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


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

我不太明白您想做什么。让我来了解一下-1)您希望从一些XSD生成c#类。2) 然后,您将使用c#类生成web服务契约。3) 然后让一些SAP组件根据合同生成代理?我可以问一下为什么要用XSD启动这个过程吗?您是先执行契约吗?我的web服务根据输入参数返回一个xml文件。我已经有xsd模式文件来验证我的xml。我的计划是创建与类相同的层次树结构,并将this类作为参数传递给我的web服务方法。好的,但是既然您知道您的客户机不支持XSD标准的某些区域,那么您可能应该使用一个不会导致web服务契约实现这些区域的类模型。例如,您真的需要公开一个类层次结构吗?或者手动修改生成的WSDL,使您的客户可以使用您的合同。是的,它归结为手动操作生成的文件…我不太明白您试图做什么。让我来了解一下-1)您希望从一些XSD生成c#类。2) 然后,您将使用c#类生成web服务契约。3) 然后让一些SAP组件根据合同生成代理?我可以问一下为什么要用XSD启动这个过程吗?您是先执行契约吗?我的web服务根据输入参数返回一个xml文件。我已经有xsd模式文件来验证我的xml。我的计划是创建与类相同的层次树结构,并将this类作为参数传递给我的web服务方法。好的,但是既然您知道您的客户机不支持XSD标准的某些区域,那么您可能应该使用一个不会导致web服务契约实现这些区域的类模型。例如,您真的需要公开类层次结构吗?或者手动修改生成的WSDL,使您的客户可以使用您的合同。是的,它归结为手动操作生成的文件。。。