Maison > développement back-end > C++ > Comment déclencher correctement les événements hérités en C# ?

Comment déclencher correctement les événements hérités en C# ?

Patricia Arquette
Libérer: 2024-12-26 12:07:10
original
898 Les gens l'ont consulté

How to Properly Raise Inherited Events in C#?

Comment déclencher des événements hérités en C#

En C#, les événements peuvent être déclarés dans les classes de base et accessibles par les classes dérivées. Cependant, déclencher des événements dans des classes héritées nécessite une gestion spécifique.

Problème :

Lorsque vous tentez de déclencher un événement hérité d'une classe de base, vous pouvez rencontrer une erreur indiquant que l'événement ne peut apparaître qu'à gauche du = ou du -= opérateurs.

Solution :

Pour déclencher des événements hérités, vous devez créer des méthodes protégées dans la classe de base qui peuvent être utilisées pour invoquer les événements. Ces méthodes doivent suivre la convention de dénomination « OnEventName ».

Par exemple, considérons la classe de base suivante :

public class BaseClass
{
    public event EventHandler Loading;
    public event EventHandler Finished;
}
Copier après la connexion

Méthodes de déclenchement d'événements protégés :

Dans la classe de base, créez des méthodes protégées comme les suivantes :

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);
    }
}
Copier après la connexion

Raising Événements dans la classe dérivée :

Dans la classe dérivée, appelez les méthodes protégées pour déclencher les événements :

public class DerivedClass : BaseClass
{
    public void DoSomething()
    {
        ...
        OnLoading(EventArgs.Empty);
        ...
        OnFinished(EventArgs.Empty);
    }
}
Copier après la connexion

Remarque :

  • Les méthodes protégées peuvent être modifiées pour vérifier si le gestionnaire d'événements doit être invoqué (par exemple, en vérifiant handler.GetInvocationList().Length > 0).
  • Cette approche garantit que les événements peuvent être déclenchés et traités de manière cohérente dans toute la hiérarchie d'héritage.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal