两个名称空间之间的模糊引用错误

时间:2014-09-02 15:56:52

标签: c# asp.net web-services

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

  

编译器错误消息:CS0104:'消息'是一个含糊不清的参考   介于' ThreeDSeekUtils.Message'和   ' System.Web.Services.Description.Message'

     

来源错误:

     

第263行:void WriteSoapMessage(MessageBinding messageBinding,   留言信息,bool soap12){         objectId = 0; SoapOperationBinding soapBinding;

     

源文件:   C:\ WINDOWS \ Microsoft.NET \框架\ v4.0.30319 \配置\ DefaultWsdlHelpGenerator.aspx

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

3 个答案:

答案 0 :(得分:2)

您需要调整签名以指定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)

答案 1 :(得分:1)

一个简单的解决方案是使用完整的命名空间编写方法,如:

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

答案 2 :(得分:1)

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

不要做

Message msg = new Message();

执行:

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