为什么派生 class 不能使用扩展该接口的类型覆盖基 class' 接口类型抽象 属性?

Why can't a derived class override base class' interface type abstract property with a type that extends that interface?

在下面的代码中,编译器抱怨 B 没有实现抽象 class ATestPropertyITest2 派生自 ITest1,因此它实现了 ITest1 的所有内容。为什么这不可能?

public interface ITest1 { }
public interface ITest2 : ITest1 { }

public abstract class A
{
    public abstract ITest1 TestProperty { get; set; }
}

public class B:A
{
    public override ITest2 TestProperty { get; set; }
}

这不安全,因为您可以这样做:

interface ITest3 : ITest1 { }
public class Test3 : ITest3 { }

A b = new B();
b.TestProperty = new Test3();

但是 Test3 没有按照 B 的要求实施 ITest2

使 A class 通用

Public abstract class A<TTest>
    Where TTest : ITest1
 {
    Public abstract TTest TestProperty {get; set;}
 }

 Public class B : A<ITest2>
 {
 ....
 }