Доступ к защищенным членам родительского класса - 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);
    }
}

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

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

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