У меня есть базовый класс и производный класс. Каждый из них имеет то же свойство, что и сеттер private
, поэтому значение может быть установлено некоторой логикой внутри класса.Унаследованное автоматически реализованное свойство с частным сетевым устройством
class First
{
internal virtual int Value { get; private set; }
void SetValue(int toValue)
{
Value = toValue;
}
}
class Second : First
{
internal override int Value { get; private set; }
void SetValue(int toValue)
{
Value = toValue;
}
}
Это приводит к ошибке компилятора:
The property or indexer ... cannot be used in this context because the set accessor is inaccessible.
Почему это так, и как я могу добиться того, что я пытаюсь сделать? Разве это невозможно с автоматически реализованными свойствами, другими словами, нужно ли вместо этого использовать поле поддержки?
Что вы на самом деле пытаетесь достичь? Наличие независимых свойств с тем же именем звучит как рецепт катастрофы для меня. –
Это все, что касается виртуальных членов: возможность переопределить их в производном классе с более конкретной логикой. Я не уверен, что следую вашим рассуждениям. –
Но у вас нет конкретной логики - у вас есть еще одно авто-реализованное свойство. И если вы думаете об этом свойстве как о публичном доступе и о частном наборе, то совершенно очевидно, что вы не можете переопределить частный метод. Опять же, чего вы действительно пытаетесь достичь? Можете ли вы дать более содержательный пример? –