Добавление метода доступа к свойству интерфейса разрешено, но не к абстрактному свойству

Почему следующее является допустимым для C #:

public interface ISomeInterface
{
    int SomeProperty
    {
        get;
    }
}

public class SomeClassImplementingInterface : ISomeInterface
{
    public int SomeProperty
    {
        get { return 32; }
        protected set {}
    }
}

, а это недопустимо:

public abstract class SomeAbstractClass
{
    public abstract int SomeProperty
    {
        get;
    }
}

public class SomeClassExtendingAbstractClass : SomeAbstractClass
{
    public override int SomeProperty
    {
        get { return 32; }
        protected set {}
    }
}

Последнее приводит к следующей ошибке времени компиляции:

'InterfaceAbstractTest.SomeClassExndingAbstractClass.SomeProperty. набор': не может переопределить, потому что 'InterfaceAbstractTest.SomeAbstractClass.SomeProperty' не имеет переопределяемый метод доступа к множеству InterfaceAbstractTest

Какова причина не запрещать последнее, но разрешать первое?

5
задан Kent Boogaart 20 February 2012 в 16:52
поделиться