У меня есть базовый класс как это:
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; } }
...
Но этот код дает ошибку. Самое главное должно реализовать встречную функциональность в базовом классе вместо этого во всех производных классах. Так, как я могу сделать получение и набор свойства с различными модификаторами?
разделите его на 2 функции:
public double Initial
{
get { return GetInitial(); }
set { SetInitial(value); }
}
protected virtual void SetInitial(double value)
{
Count = 1;
}
protected abstract double GetInitial();
Нет, не можете. По крайней мере, я не нашел решения.
Если свойство помечено как abstract
, то ни геттер, ни сеттер не могут иметь тела.
Сделать его не абстрактным и не виртуальным. И сделать базовое поле приватным. Таким образом, производный класс не сможет ни переопределить его, ни испортить.