:제네릭 및 다음 클래스 및 인터페이스를 감안할 때 인터페이스 문제
public class Test<T>
{
}
public interface ITesting<T>
{
Test<T> LoadTest();
}
나는 다음과 같이 클래스를 추가 할 수 있습니다
잘 작동과 오류가 발생하지 않습니다public class TestManager : ITesting<object>
{
#region ITesting
public Test<object> LoadTest()
{
return new Test<object>();
}
#endregion
}
. 나는 다음과 같이 클래스를 대체하려고하면 :
public class TestDerived : Test<object>
{
}
public class TestDerivedManager : ITesting<object>
{
#region ITesting
public TestDerived LoadTest()
{
return new TestDerived();
}
#endregion
}
지금 다음 오류 얻을 :
Error 'TestDerivedManager' does not implement interface member 'ITesting.LoadTest()'. 'TestDerivedManager.LoadTest()' cannot implement 'ITesting.LoadTest()' because it does not have the matching return type of 'Test'.
를하지만 나에게 TestDerived
가 Test<object>
같이 작동합니다 같이 보인다. 나는 분명히 여기 뭔가 정확하게 이해하지 못하고있다. 누군가가 왜 이것이 잘못된 이유에 대한 세부 사항을 지적 할 수 있습니까? 그리고 아마도 그것을 교정하기 위해 무엇을 할 수 있을까요?
이 동작에는 제네릭과 관련이 전혀 없습니다. 만약 당신이'interface I {Animal M(); } 클래스 C : I {공개 기린 M() {새 기린 반환(); }}'같은 에러가 나옵니다. –