Расширение свойства (property) базового класса - C#
Формулировка задачи:
Всем привет.
Есть базовый абстрактный класс, в котором объявлено свойство только на get;
Хочу в дочернем классе расширить это свойство и на set; Реально ли это?
Все мои попытки приводят к ошибкам:
1. Если пробую добавить set в override версию, то
2. Если пробую добавить свойство с таким же именем на set, то
3. Если пробую скрыть свойство через new, то
cannot override because `Base.Property' does not have an overridable set accessor
The type `Derived' already contains a definition for `Property'
`Derived.Property' hides inherited abstract member `Base.Property'
using System; abstract class Base { public abstract int Property { get; } } class Derived : Base { private int property; public override int Property { get { return property; } // set { property = value; } // cannot override because `Base.Property' does not have an overridable set accessor } /*public int Property // The type `Derived' already contains a definition for `Property' { set { property = value; } } */ /*public new int Property // `Derived.Property' hides inherited abstract member `Base.Property' { get { return property; } set { property = value; } } */ } public class Test { public static void Main() { Base d = new Derived(); } }
Решение задачи: «Расширение свойства (property) базового класса»
textual
Листинг программы
public abstract class MyBase { public virtual bool HasSomething { get { return true; } set { throw new NotSupportedException(); } } } public class Derived1 : MyBase { } public class Derived2 : MyBase { public override bool HasSomething { get; set; } }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д