在下面的代码中,编译器抱怨B没有实现抽象类TestProperty
的{{1}}。 A
源自ITest2
,因此它实现了ITest1
所拥有的所有内容。为什么这不可能?
ITest1
答案 0 :(得分:8)
这样做不安全,因为你可以这样做:
interface ITest3 : ITest1 { }
public class Test3 : ITest3 { }
A b = new B();
b.TestProperty = new Test3();
但Test3
ITest2
未按B
的要求实施{{1}}。
答案 1 :(得分:2)
使A类通用
Public abstract class A<TTest>
Where TTest : ITest1
{
Public abstract TTest TestProperty {get; set;}
}
Public class B : A<ITest2>
{
....
}