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

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

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

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

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

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

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


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

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

11   голосов , оценка 4.364 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы