В следующем коде компилятор жалуется на то, что B не выполняет TestProperty
абстрактного класса A
. ITest2
происходит от 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; }
}
Если вы собираетесь вниз голос так быстро, вы можете по крайней мере, уход объяснить? – PersyJack
То, о чем вы просите, называется ковариацией. См. Http://stackoverflow.com/questions/5709034 и http://en.wikipedia.org/wiki/Covariance_and_contravariance_%28computer_science%29#Inheritance_in_object_oriented_languages –