CS0473 de erro do compilador

Mensagem de erro

implementação explícita da interface 'nome do método' corresponde a mais de um membro de interface.Qual membro de interface é escolhido, na verdade, é dependente de implementação.Considere o uso de uma implementação não explícita.

Em alguns casos, um método genérico pode adquirir a mesma assinatura de um método não genérico.O problema é que não é possível no comuns linguagem infra-estrutura (CLI) metadados sistema ao estado sem ambigüidade método que vincula à qual slot.Ele é o CLI para fazer essa determinação.

Observação:

Este erro é gerado no Visual Studio 2008 em lugares onde ele não foi disparado no Visual Studio 2005.

Para corrigir este erro

  • Eliminar a implementação explícita e que a implementação implícita public int TestMethod(int) Implemente ambos os métodos de interface.

Exemplo

O código a seguir gera 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;
    }
}

Consulte também

Outros recursos

Fabulosa Adventures in Coding