Ошибка компилятора CS0473
Реализация явного интерфейса "имя_метода" соответствует более чем одному членом интерфейса. Фактический выбор конкретного члена интерфейса зависит от реализации. Попробуйте вместо явной реализации использовать неявную реализацию интерфейса.
В некоторых случаях универсальный метод может получить такую же сигнатуру, что и неуниверсальный метод. Проблема заключается в том, что система метаданных Common Language Infrastructure (CLI) никаким способом не может однозначно установить, какой метод привязан к какому слоту. Это определение делается на усмотрение CLI.
Чтобы исправить ошибку, удалите явную реализацию и реализуйте оба метода интерфейса в неявной реализации public int TestMethod(int)
.
Следующий код приводит к возникновению ошибки 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;
}
}
Отзыв о .NET
.NET — это проект с открытым исходным кодом. Выберите ссылку, чтобы оставить отзыв: