我们必须将我们的项目与后端Oracle平台集成。这种集成是通过各种Web服务实现的。我有所有这些集成的WSDL和XSD。我需要从这些WSDL生成DataContracts& XSD文件。
现在的问题是,大多数这些集成共享一些常见的数据类型。我想重复使用它们
例如,
Integration1: oracle/common/commonDataTypes.xsd oracle/integration1/someXSD.xsd oracle/ebo/baseTypes.xsd Integration2: oracle/common/commonDataTypes.xsd oracle/integration2/someXSD.xsd oracle/ebo/baseTypes.xsd Integration3: oracle/commonDataTypes.xsd oracle/integration2/someXSD.xsd oracle/ebo/baseTypes.xsd
在这种情况下,我想在integration1和amp;之间重用oracle.common.CommonDataTypes。 2.
到目前为止,我已经尝试过WSCF.blue& WSCF。但是这些工具在单个文件夹(和单个命名空间)中生成所有代码而不遵循命名空间
我想在命名空间下生成类,如oracle,oracle.commonData,oracle.integration1,oracle.ebo等。
因此,生成Datacontracts的任何方式都遵循精确的名称空间表示法,因为XSD具有?
答案 0 :(得分:1)
我担心没有可以为你做这件事的工具。或者我所知道的。实现你想要的最好的方法是:
提取数据合约 使用/ dconly标志进行集成1 在svcutil上。你需要包括所有 调用中的模式名称 SvcUtil工具。这将生成一个类 包含所有类型的文件。
手动进入文件 在你的课程到来之前瞎逛 所有在正确的命名空间。编 这是一个集会。
然后返回集成1 服务并生成代理代码 在svcutil中使用/ r标志 引用包含的程序集 您想要的常见类型 重用。这将创建一个类文件 包含你的代理应该 参考你的常见类型。
然后你可以这样做 整合2和3。
但是,这种方法基于使用DataContractSerializer的svcutil来完成工作,因为/ r标志对XmlSerializer不可用。这只有在oracle服务上公开的模式遵守相当严格的DCS规则时才有效(可在此处找到:http://msdn.microsoft.com/en-us/library/ms733112.aspx)。如果不遵守这些规则,则svcutil将回退到使用不支持类型重用的XmlSerializer。
希望这有帮助。
答案 1 :(得分:0)
使用XSD2Code - 您可以指定生成的c#类的目标命名空间。