Błąd kompilatora CS0473
Implementacja jawnego interfejsu "nazwa metody" pasuje do więcej niż jednego elementu członkowskiego interfejsu. Wybrany element członkowski interfejsu jest zależny od implementacji. Rozważ użycie implementacji niezwiązanej z jawną implementacją.
W niektórych przypadkach metoda ogólna może uzyskać ten sam podpis co metoda niegeneryczna. Problem polega na tym, że w systemie metadanych infrastruktury języka wspólnego (CLI) nie ma możliwości jednoznacznego stanu, który metoda wiąże się z którym miejscem. To do interfejsu wiersza polecenia należy dokonać tej determinacji.
Aby poprawić błąd, należy wyeliminować jawną implementację i zaimplementować obie metody interfejsu w niejawnej implementacji public int TestMethod(int)
.
Poniższy kod generuje 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;
}
}
Opinia o produkcie .NET
.NET to projekt typu open source. Wybierz link, aby przekazać opinię: