Maison >développement back-end >C++ >Comment puis-je déclencher correctement des événements hérités dans des classes dérivées C# ?
Soumission d'événements hérités d'une classe de base en C#
En C#, il est courant d'hériter d'événements d'une classe de base pour faciliter l'événement manipulation dans les classes dérivées. Cependant, déclencher de tels événements hérités nécessite une approche spécifique pour éviter les erreurs du compilateur.
Considérons un scénario dans lequel une classe de base définit les événements suivants :
public class BaseClass { public event EventHandler Loading; public event EventHandler Finished; }
Dans une classe dérivée, tenter de déclencher l'événement Loading utilisant :
this.Loading(this, new EventHandler());
entraîne l'erreur :
The event 'BaseClass.Loading' can only appear on the left hand side of += or -= (BaseClass')
Cette erreur se produit car les événements, contrairement aux autres membres de la classe, ne peuvent pas être invoqués directement par la classe dérivée. Au lieu de cela, les événements hérités doivent être déclenchés en appelant des méthodes spécifiques définies dans la classe de base. Pour y parvenir, les étapes suivantes sont nécessaires :
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); } } }
public class DerivedClass : BaseClass { public void DoSomething() { // Raise Loading event OnLoading(EventArgs.Empty); // Raise Finished event OnFinished(EventArgs.Empty); } }
En suivant cette approche, les événements hérités peuvent être déclenchés de manière sûre et efficace dans des classes dérivées en C#.
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!