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 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)
.
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;
}
}
Comentarios de .NET
.NET es un proyecto de código abierto. Seleccione un vínculo para proporcionar comentarios: