«Если рабочий хочет хорошо выполнять свою работу, он должен сначала заточить свои инструменты» — Конфуций, «Аналитики Конфуция. Лу Лингун»
титульная страница > программирование > Как правильно вызвать унаследованные события в полученных классах в C#

Как правильно вызвать унаследованные события в полученных классах в C#

Опубликовано в 2025-04-14
Просматривать:957

How Can I Properly Raise Inherited Events in C# Derived Classes?

Повышение событий, унаследованных от базового класса в C#

в C#, это обычная практика, чтобы наследовать события от базового класса, чтобы облегчить обработку событий в полученных классах. Однако для повышения таких наследственных событий требуется конкретный подход, чтобы избежать ошибок компилятора. { Общественное мероприятие, погрузка на погрузку; Публичное мероприятие Eventhandler закончила; }

в полученном классе, пытаясь поднять событие загрузки с использованием:

public class BaseClass
{
    public event EventHandler Loading;
    public event EventHandler Finished;
}

получено в ошибке:

(Baseclass ')
this.Loading(this, new EventHandler());
эта ошибка возникает потому, что события, в отличие от других членов класса, не могут быть вызваны непосредственно полученным классом. Вместо этого унаследованные события должны быть подняты, вызывая конкретные методы, определенные в базовом классе. Чтобы достичь этого, необходимы следующие шаги:

this.Loading(this, new EventHandler());
создать защищенные методы повышения событий в базовом классе:

определить защищенные методы в базовом классе, которые несут ответственность за повышение событий. Например:
  1. public Class Baseclass { Общественное мероприятие, погрузка на погрузку; Публичное мероприятие Eventhandler закончила; Защищенная виртуальная void Onloading (EventArgs E) { Eventhandler обработчик = загрузка; if (обработчик! = null) { обработчик (это, e); } } Защищенная виртуальная пустота (Eventargs E) { Eventhandler обработчик = закончен; if (обработчик! = null) { обработчик (это, e); } } }
вызвать методы развития событий в полученных классах:
this.Loading(this, new EventHandler());
в полученных классах, вместо того, чтобы непосредственно ссылаться на события, вызовите соответствующие методы, определяемые в базовом классе. Например:
  1. public class defivedclass: baseclass { public void domomething () { // Повышение мероприятия по загрузке Onloading (EventArgs.empty); // поднять законченное мероприятие Onfine (eventargs.empty); } }
    , следуя этому подходу, унаследованные события могут быть безопасно и эффективно подняты в полученных классах в C#.
  2. ]
Последний учебник Более>

Изучайте китайский

Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.

Copyright© 2022 湘ICP备2022001581号-3