Erro do compilador CS0473
A implementação explícita da interface 'nome do método' corresponde a mais de um membro da interface. O membro da interface realmente escolhido depende da implementação. Em vez disso, considere o uso de uma implementação não explícita.
Em alguns casos, um método genérico pode adquirir a mesma assinatura que um método não genérico. O problema é que não há nenhuma maneira no sistema de metadados Common Language Infrastructure (CLI) para afirmar inequivocamente qual método se liga a qual slot. Cabe à CLI tomar essa decisão.
Para corrigir o erro, elimine a implementação explícita e implemente ambos os métodos de interface na implementação public int TestMethod(int)
implícita.
O código a seguir gera 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;
}
}
Comentários do .NET
O .NET é um projeto código aberto. Selecione um link para fornecer comentários: