Я хотел бы только принудительно выполнить реализацию С# getter в заданном свойстве из базового абстрактного класса. Производные классы могут, если они захотят, также предоставить средство для этого свойства для публичного использования статически связанного типа.
Учитывая следующий абстрактный класс:
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;
}
Но затем я получаю синтаксическую ошибку, так как я пытаюсь переопределить не существующий сеттер. Я попробовал другой способ, например, объявить базовый наборщик приватным и таким, и я все еще натыкаюсь на всевозможные ошибки, которые мешают мне это делать. Должен быть способ сделать это, поскольку он не нарушает какой-либо контракт с базовым классом.
Кстати, это можно сделать с помощью интерфейсов, но мне действительно нужна эта реализация по умолчанию.
Я так часто натыкался на эту ситуацию, мне было интересно, существует ли скрытый трюк синтаксиса С#, иначе я просто буду жить с ним и реализовать ручной метод SetProperty().