컴파일러 오류 CS0473
명시적 인터페이스 구현 'method name'이 두 개 이상의 인터페이스 멤버와 일치합니다. 실제로 선택되는 인터페이스 멤버는 구현에 따라 다릅니다. 대신 비명시적 구현을 사용하는 것이 좋습니다.
경우에 따라 제네릭 메서드가 제네릭이 아닌 메서드와 동일한 서명을 가져올 수 있습니다. 문제는 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;
}
}
GitHub에서 Microsoft와 공동 작업
이 콘텐츠의 원본은 GitHub에서 찾을 수 있으며, 여기서 문제와 끌어오기 요청을 만들고 검토할 수도 있습니다. 자세한 내용은 참여자 가이드를 참조하세요.
.NET 피드백
.NET은(는) 오픈 소스 프로젝트입니다. 다음 링크를 선택하여 피드백을 제공해 주세요.