Я хотел бы только принудительно выполнить реализацию получателя C# для данного свойства из базового абстрактного класса. Производные классы могут, если они захотят, также предоставить средство для этого свойства для публичного использования статически связанного типа.Переопределить свойство readonly для чтения/записи свойства
Учитывая следующий абстрактный класс:
public abstract class Base
{
public abstract int Property { get; }
}
Если я хочу производный класс, который также реализует сеттера, я мог бы наивно пытаться:
public class Derived : Base
{
public override int Property
{
get { return field; }
set { field = value; } // Error : Nothing to override.
}
private int field;
}
Но тогда я получаю синтаксическую ошибку, так как я попробуйте переопределить существующий сеттер. Я попробовал другой способ, например, объявить базовый наборщик приватным и таким, и я все еще натыкаюсь на всевозможные ошибки, которые мешают мне это делать. Должен быть способ сделать это, поскольку он не нарушает контракт с базовым классом.
Возможно, это может быть сделано с интерфейсами, но мне действительно нужна эта реализация по умолчанию.
Я так часто натыкался на эту ситуацию, мне было интересно, существует ли скрытый трюк синтаксиса C#, иначе я просто буду жить с ним и реализовать ручной метод SetProperty().
Перекрестная ссылка: http://stackoverflow.com/questions/2243886/make-a-read-only-property-writable-in-the-derived-class – Mikhail