添加Web服务引用后的模糊引用

时间:2011-12-24 07:55:26

标签: c# web-services asmx

我正在添加对Web服务的引用。在Web服务中,我有一个名为CustomerRecord的类。我有一个名为GetCustomerData()的方法,它返回一个CustomerRecord类的数组。

将使用web服务的项目也有CustomerRecord类。这是Web服务中的一个的精确表示。

现在,当我使用网络服务时,有2个CustomerRecord个类。这会导致模糊的引用错误。

3 个答案:

答案 0 :(得分:1)

简单的解决方案是重命名其中一个。但如果你不能这样做,那么你仍然有两种选择。

从引用两个CustomerRecord类的文件顶部删除using,并使用完整命名空间简单地引用它。

My.Long.Namespace.CustomerRecord customer = new My.Long.Namespace.CustomerRecord();

或者,在同一个文件中,使用using别名其中一个,只为该文件。

using WsCustomerRecord = My.Long.Namespace.CustomerRecord;

// ...

    WsCustomerRecord customer = new WsCustomerRecord();

答案 1 :(得分:1)

在给出错误的行中,编译器无法决定应该选择这两个类中的哪一个。

要解决此问题,有以下选项:

  1. 为这两个类使用不同的命名空间。

  2. 删除其中一个类

  3. 使用别名

  4. 只有当两个类位于同一名称空间中并且您希望同时保留它们时才需要第一个选项。

    当两个类完全相同时,第二个选项很有用。您可以删除客户端中的那个,或者在添加服务引用时,选择重用现有类选项,以便保留客户端版本。

    最后一个选项的工作原理如下:

    using ns1 = Some.CoolNamespace;
    using ns2 = Another.CoolNaespace;
    
    ns2.AClass x = new ...
    

答案 2 :(得分:1)

如果使用Web服务,CustomerRecord类必须具有与Web服务相同的命名空间。要解决歧义,请右键单击\ resolve,然后显式地写入所需的命名空间对CustomerRecord对象的任何引用。

由于CustomerRecord是同一个类,我建议删除项目中使用Web服务的CustomerRecord,并仅使用Web服务。

如果您需要编写Web服务不需要的特定代码或者没有通过SOAP序列化,请记住来自Web方法的任何类都是PARTIAL,因此您可以编写额外的代码

public partial class CustomerRecord 
{
 ....