Chyba kompilátoru CS0473
Explicitní implementace rozhraní název metody odpovídá více než jednomu členu rozhraní. Který člen rozhraní je ve skutečnosti vybrán, je závislý na implementaci. Zvažte místo toho použití ne explicitní implementace.
V některých případech může obecná metoda získat stejný podpis jako ne generická metoda. Problém spočívá v tom, že v systému metadat společné jazykové infrastruktury (CLI) neexistuje způsob, jak jednoznačně uvést, která metoda je svázána s jakým slotem. Je na rozhraní příkazového řádku, aby se toto rozhodnutí rozhoduje.
Chcete-li chybu opravit, eliminujte explicitní implementaci a implementujte obě metody rozhraní v implicitní implementaci public int TestMethod(int)
.
Následující kód vygeneruje 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;
}
}
Zpětná vazba k produktu .NET
.NET je open source projekt. Vyberte odkaz pro poskytnutí zpětné vazby: