Может получение свойства быть абстрактным и набор быть виртуальным?

У меня есть базовый класс как это:

public class Trajectory{
    public int Count { get; set; }
    public double Initial { get; set { Count = 1; } }
    public double Current { get; set { Count ++ ; } }
}

Так, у меня есть код в базовом классе, который делает наборы виртуальными, но получение должно остаться абстрактным. Таким образом, мне нужно что-то вроде этого:

...
public double Initial { abstract get; virtual set { Count = 1; } }
...

Но этот код дает ошибку. Самое главное должно реализовать встречную функциональность в базовом классе вместо этого во всех производных классах. Так, как я могу сделать получение и набор свойства с различными модификаторами?

8
задан John Saunders 6 June 2010 в 22:03
поделиться

3 ответа

разделите его на 2 функции:

public double Initial
{
    get { return GetInitial(); }
    set { SetInitial(value); }
}

protected virtual void SetInitial(double value)
{
    Count = 1;
}

protected abstract double GetInitial();
11
ответ дан 5 December 2019 в 14:00
поделиться

Нет, не можете. По крайней мере, я не нашел решения.

Если свойство помечено как abstract , то ни геттер, ни сеттер не могут иметь тела.

0
ответ дан 5 December 2019 в 14:00
поделиться

Сделать его не абстрактным и не виртуальным. И сделать базовое поле приватным. Таким образом, производный класс не сможет ни переопределить его, ни испортить.

1
ответ дан 5 December 2019 в 14:00
поделиться
Другие вопросы по тегам:

Похожие вопросы: