"Se um trabalhador quiser fazer bem o seu trabalho, ele deve primeiro afiar suas ferramentas." - Confúcio, "Os Analectos de Confúcio. Lu Linggong"
Primeira página > Programação > Como acionar corretamente eventos herdados em classes derivadas em C#

Como acionar corretamente eventos herdados em classes derivadas em C#

Postado em 2025-04-14
Navegar:513

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

levantando eventos herdados de uma classe base em C#

em C#, é uma prática comum herdar eventos de uma classe base para facilitar o manuseio de eventos nas classes derivadas. No entanto, o levantamento de eventos herdados requer uma abordagem específica para evitar erros do compilador. { Carregamento de EventHandler de Eventos Públicos; EventHandler de eventos públicos terminou; }

em uma classe derivada, tentando aumentar o evento de carregamento usando:

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

resulta no erro: (Baseclass ')

this.Loading(this, new EventHandler());

The event 'BaseClass.Loading' can only appear on the left hand side of  = or -= (BaseClass')

definem métodos protegidos na classe base responsável por aumentar os eventos. Por exemplo:

  1. classe pública Baseclass { Carregamento de EventHandler de Eventos Públicos; EventHandler de eventos públicos terminou; Onloading virtual protegido (EventArgs e) { EventHandler Handler = carregamento; if (manipulador! = nulo) { manipulador (este, e); } } Virtual Proteged Void Onfinished (EventArgs E) { EventHandler Handler = terminado; if (manipulador! = nulo) { manipulador (este, e); } } }
  2. Invocar métodos de criação de eventos nas classes derivadas:
public class BaseClass
{
    public event EventHandler Loading;
    public event EventHandler Finished;

    protected virtual void OnLoading(EventArgs e)
    {
        EventHandler handler = Loading;
        if( handler != null )
        {
            handler(this, e);
        }
    }

    protected virtual void OnFinished(EventArgs e)
    {
        EventHandler handler = Finished;
        if( handler != null )
        {
            handler(this, e);
        }
    }
}
  1. classe pública DerivedClass: Baseclass { public void Dosomething () { // Aumentar o evento de carregamento OnLoading (EventArgs.Empty); // Levante o evento acabado Onfinished (EventArgs.Empty); } } Seguindo essa abordagem, eventos herdados podem ser criados com segurança e eficiência em classes derivadas em C#.
Tutorial mais recente Mais>

Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.

Copyright© 2022 湘ICP备2022001581号-3