Расширение свойства (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; }
}