之前我已经看过这个问题(here为一个),但解决方法是不重用引用的程序集。 我需要重用包含的程序集,因为多个服务引用相同的共享对象。 如果我不重用程序集,我会得到名称空间错误,因为引用了相同的Object 不同的命名空间。 (即Service1.Object,Service2.Object)
简而言之,我需要为Web服务扩展ClientBase的生成的Client类,但我无法取消重用引用的程序集,因为我需要具有相同名称空间的共享对象。有什么建议吗?
答案 0 :(得分:1)
您可以使用 svcutil.exe 生成客户端代理,并使用 / r 开关指定要引用的程序集,而不是在自动生成中重新发出的程序集客户代理代码。
在构建ProjBSvc后执行以下操作,输出.wsdl&的.xsd
svcutil.exe ProjBSvc.dll
第二消耗wsdl& xsd生成代理/客户端:
svcutil.exe *.wsdl *.xsd /o:<ProjCClientPath>/Client.cs /r:ProjACommon.dll
ProjCClient引用从先前步骤生成的Client.cs
使用对象浏览器构建和检查,您将看到C中引用A类型的类型,而不是C命名空间中具有相同名称的新类型。
您可能希望/tcv
和/n
以及其他开关满足您的需求。
这是article可能会有所帮助。它还链接到Microsoft documentation for svcutil
答案 1 :(得分:0)
使用映射器,这意味着您必须复制模型(对象)并使用一个类将对象从一个名称空间映射到下一个名称空间。