当前位置: 首页 > 编程语言 > C#

使用像XSD中一样的精确命名空间生成DataContracts分享

时间:2023-04-11 10:57:39 C#

像在XSD中一样使用精确命名空间生成DataContracts我们必须将我们的项目与后端Oracle平台集成。这种集成是通过各种网络服务实现的。我拥有用于??所有这些集成的WSDL和XSD。我需要从这些WSDL和XSD生成DataContract。现在的问题是这些集成中的大多数共享一些通用数据类型。我想重用它们。例如,集成1:oracle/common/commonDataTypes.xsdoracle/integration1/someXSD.xsdoracle/ebo/baseTypes.xsd集成2:oracle/common/commonDataTypes.xsdoracle/integration2/someXSD.xsdoracle/ebo/baseTypes.xsdIntegration3:oracle/commonDataTypes.xsdoracle/integration2/someXSD.xsdoracle/ebo/baseTypes.xsd在这种情况下,我想在integration1和2之间重用oracle.common.CommonDataTypes。到目前为止,我已经尝试过WSCF.blue和WSCF。但是这些工具在不考虑命名空间的情况下在单个文件夹(和单个命名空间)中生成所有代码。我想在oracle、oracle.commonData、oracle.integration1、oracle.ebo等名称空间下生成类。那么有什么方法可以生成遵循XSD所具有的确切命名空间符号的Datacontracts吗?恐怕没有工具可以为您做到这一点。或者我知道。实现你想要的最好方法是:在svcutil上使用/dconly标志来提取数据协定以进行集成1.调用svcutil时需要包括所有模式名称。这将生成包含所有类型的类文件。进入文件并手动破解,直到您的类都在正确的命名空间中。编译成汇编。然后返回集成1服务并使用svcutil中的/r标志生成代理代码以引用包含要重用的公共类型的程序集。这将创建一个包含您的代理的类文件,它应该引用您的常用类型。然后,您可以对集成2和3执行相同的操作。但是,此方法基于使用DataContractSerializer的svcutil来完成这项工作,因为/r标志对XmlSerializer不可用。这仅在oracle服务上公开的模式遵守相当严格的DCS规则时才有效(可以在此处找到:http://msdn.microsoft.com/en-us/library/ms733112.aspx)。如果不遵循这些规则,svcutil将退回到使用不支持类型重用的XmlSerializer。希望这可以帮助。使用XSD2Code-您可以指定生成的c#类的目标命名空间。以上就是C#学习教程:像XSD一样,使用精确命名空间生成DataContracts共享的所有内容。如果对你有用,需要进一步了解C#学习教程,希望大家多多关注。本文来自网络收集,不代表侵权,请点击右边联系管理员删除。如需转载请注明出处: