两个命名空间之间存在模糊引用错误



我在浏览器上运行Web服务时收到此消息。请注意,源代码是一个windows文件,不能根据我的需要进行更改。

编译器错误消息:CS0104:"Message"是一个不明确的引用介于"ThreeDSeekUtils.Message"和'System.Web.Services.Description.Message'

来源错误:

第263行:void WriteSoapMessage(MessageBinding-MessageBinding,消息消息,bool soap12){objectId=0;SoapOperationBinding soapBinding;

源文件:c: \Windows\Microsoft.NET\Framework\v4.0.30319\Config\DefaultWsdlHelpGenerator.aspx

在不从Web服务中删除ThreeDSeekUtils和System.Web.Services的命名空间的情况下,如何解决此问题?(我的Web服务Service1.asmx中需要这两个)这个问题以前没有人回答。

您需要调整签名以指定Message类的显式命名空间:

void WriteSoapMessage(MessageBinding messageBinding, 
    ThreeDSeekUtils.Message message, bool soap12)

void WriteSoapMessage(MessageBinding messageBinding, 
    System.Web.Services.Description.Message message, bool soap12)

无论哪个合适。另一个选项是在类顶部的using块中别名名称空间:

using ThreeD = ThreeDSeekUtils;
using ServicesDesc = System.Web.Services.Description;

然后你可以使用缩写形式的别名:

void WriteSoapMessage(MessageBinding messageBinding, 
    ThreeD.Message message, bool soap12)

void WriteSoapMessage(MessageBinding messageBinding, 
    ServicesDesc.Message message, bool soap12)

一个简单的解决方案是编写具有完整名称空间的方法,如:

void WriteSoapMessage(MessageBinding messageBinding, ThreeDSeekUtils.Message message, bool soap12)

在声明变量时,可以完全限定类名。

不要进行

Message msg = new Message();

Do:

ThreeDSeekUtils.Message msg = new ThreeDSeekUtils.Message();

最新更新