gpt4 book ai didi

c# - 重命名服务引用的一部分

转载 作者:行者123 更新时间:2023-11-30 16:13:23 24 4
gpt4 key购买 nike

我需要访问一个基于 Java 的服务,该服务定义了一个 portType 元素,该元素位于它导入的其中一个模式文件所使用的同一命名空间中。不幸的是,该架构包含一个与 portType 同名的 complexType!

问题是“添加服务引用”使用 portType 的名称来创建服务契约的名称,并使用complexType - 它在同一个 .NET 命名空间中创建它们。那是行不通的!

我可以在“添加服务引用”对话框中或在 .svcmap 文件中做些什么来“重命名”服务契约(Contract)类型吗?


一个密切相关的问题是 - 如果 portTypecomplexType 位于不同的命名空间(恕我直言,它们应该 是)?

最佳答案

不幸的是,我认为简短的回答是“不”。

是否有可能尝试说服 Java 服务的维护者从他们的界面中消除歧义?如果是这样,我建议尽可能努力地游说此更改,因为您的其他选择并不是那么好:

可以尝试使用 ExcludedTypes .svcmap 文件中的元素强制服务引用不生成 complexTypeportType 冲突.如果你真的需要使用那个 complexType ,你需要手动实现它,这是一个无赖。

可以手动编辑 Reference.cs文件来更改其中一种冲突类型的名称,正如其他人所建议的那样。但是,维护代码的每个人都需要记住每次重新生成服务引用时都要执行此手动编辑,这很可惜。

可以NamespaceMappings .svcmap 文件中的元素,但它只允许您重命名整个命名空间,而不是该命名空间中的单个类型,这是一个无赖。

可以手动创建服务契约接口(interface)(假设这是从 portType 生成的类型),然后使用 ServiceContractMappings .svcmap 文件中的元素以使用该类型而不是自动生成它。但是当然你必须手动维护那个界面,这是一个无赖。 (这可能是最好的选择,IMO,如果你不能说服服务维护者改变他们的服务)。

关于c# - 重命名服务引用的一部分,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21769854/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com