Leer en inglés

Compartir a través de


Error del compilador CS0473

La implementación de interfaz explícita 'nombre de método' coincide con más de un miembro de interfaz. El miembro de interfaz que se elige depende de la implementación. Considere el uso de una implementación no explícita en su lugar.

En algunos casos, un método genérico podría adquirir la misma signatura que un método no genérico. El problema es que en el sistema de metadatos de la infraestructura de lenguaje común (en inglés, "Common Language Infrastructure" o CLI)", no hay ninguna manera inequívoca de indicar qué método se enlaza a cada posición. Corresponde a CLI tomar esa determinación.

Para corregir este error

Para corregir el error, elimine la implementación explícita e implemente ambos métodos de interfaz en la implementación implícita public int TestMethod(int).

Ejemplo

El código siguiente genera el error CS0473:

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 también