Kyl*_*yle 3 c# generics implementation interface
给出以下类和接口:
public class Test<T>
{
}
public interface ITesting<T>
{
Test<T> LoadTest();
}
Run Code Online (Sandbox Code Playgroud)
我可以添加一个具有以下内容的类:
public class TestManager : ITesting<object>
{
#region ITesting
public Test<object> LoadTest()
{
return new Test<object>();
}
#endregion
}
Run Code Online (Sandbox Code Playgroud)
哪个工作正常,并没有错误.如果我尝试用以下内容替换该类:
public class TestDerived : Test<object>
{
}
public class TestDerivedManager : ITesting<object>
{
#region ITesting
public TestDerived LoadTest()
{
return new TestDerived();
}
#endregion
}
Run Code Online (Sandbox Code Playgroud)
我现在收到以下错误:
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>
.我显然在这里没有正确理解.有人可能会指出我为何不正确的细节吗?也许我可能会做些什么来纠正它?
一个TestDerived
是Test<object>
,是的,但是Test<object>
是不是一个TestDerived
.
合同说ITesting<object>
有一种方法可以退货Test<object>
.不只是一个特例(TestDerived
).
要使代码正常工作,请按以下方式进行更改:
public class TestDerivedManager : ITesting<object>
{
public Test<object> LoadTest()
{
return new TestDerived();
}
}
Run Code Online (Sandbox Code Playgroud)