Доступ к защищенным членам родительского класса - C#

Узнай цену своей работы

Формулировка задачи:

class Base {
    protected int x;
}
 
class Child: Base {
    public void DoSomething(Base b) {
        b.x = 0;
    }
}
Доступ к защищенному члену 'Program.Base.x' через квалификатор типа 'Program.Base' невозможен; квалификатор должен иметь тип 'Program.Child' (или производный от него тип) (CS1540)
Скажите, каким образом можно получить доступ к такому члену? Явное приведение вниз (к Child) и объявление как internal не предлагать.

Решение задачи: «Доступ к защищенным членам родительского класса»

textual
Листинг программы
class Child : Base
{
    public void DoSomething(Base b)
    {
        b.GetType().GetField("x", BindingFlags.NonPublic | BindingFlags.Instance).SetValue(b, 0);
    }
}

ИИ для рефератов и докладов


  • Экспорт Word по ГОСТу
  • Минимум 80% уникальности текста
  • Поиск релевантных источников в интернете
  • Готовый документ за 2 минуты

Оцени полезность:

11   голосов , оценка 4.364 из 5
Похожие ответы