У мене є абстрактний клас, який визначає a get, але ні set, тому що, що стосується цього абстрактного класу, йому потрібен лише a get.
public abstract BaseClass
{
public abstract double MyPop
{get;}
}
Однак у якомусь класі виведення мені потрібна setвластивість, тому я розглядаю цю реалізацію
public class DClass: BaseClass
{
public override double MyPop
{get;set;}
}
Проблема в тому, що я отримав повідомлення про помилку компіляції
* .set: неможливо замінити, оскільки *. не має переадресованого набору аксесуарів.
Хоча я думаю, що вищезазначений синтаксис цілком законний.
Будь-яка ідея з цього приводу? Обхідний шлях, або чому це так?
Редагувати: Єдиний підхід, який я можу придумати, - поставити і те, getі інше, setяк в абстрактному класі, і нехай підклас кидає а NotImplementedExceptionякщо setвикликається, і це не потрібно. Це те, що мені не подобається, поряд із спеціальним методом сеттера .
doubleзначення, яке буде реалізоване конкретно в кожному класі. Іноді це значення потрібно буде встановити, і тому деякі з цих класів повинні надавати спосіб встановити це. Чи це правильно? Скільки рівнів успадкування потрібно використовувати?