更新:2007 年 11 月

错误消息

显式接口实现“method name”与多个接口成员匹配。实际选择哪个接口成员将取决于实现。请考虑改用非显式接口实现。

在有些情况下,泛型方法可能会获取与非泛型方法相同的签名。问题在于 Common Language Infrastructure (CLI) 元数据系统无法明确规定将哪个方法绑定到哪个槽。这需要 CLI 做出判断。

说明:

在 Visual Studio 2008 中的有些地方会引发此错误,而在 Visual Studio 2005 中的这些地方则不会引发此错误。

更正此错误

  • 消除显式实现,并且只包含实现这两个接口方法的隐式实现 public int TestMethod(int)

示例

下面的代码生成 CS0473:

 复制代码
// cs0473.cs
public interface ITest<T>
{
    int TestMethod(int i);
    int TestMethod(T i);
}

public class ImplementingClass : ITest<int>
{
    int ITest<int>.TestMethod(int i) // CS0473
    {
        return i + 1;
    }

    public int TestMethod(int i)
    {
        return i - 1;
    }
}

class T
{
    static int Main()
    {
        ImplementingClass a = new ImplementingClass();
        if (a.TestMethod(0) != -1)
            return -1;

        ITest<int> i_a = a;
        System.Console.WriteLine(i_a.TestMethod(0).ToString());
        if (i_a.TestMethod(0) != 1)
            return -1;

        return 0;
    }
}

请参见