Heim >Backend-Entwicklung >C++ >Wie löst man geerbte Ereignisse in C# richtig aus?

Wie löst man geerbte Ereignisse in C# richtig aus?

Patricia Arquette
Patricia ArquetteOriginal
2024-12-26 12:07:10895Durchsuche

How to Properly Raise Inherited Events in C#?

So lösen Sie geerbte Ereignisse in C# aus

In C# können Ereignisse in Basisklassen deklariert werden und auf abgeleitete Klassen zugegriffen werden. Das Auslösen von Ereignissen in geerbten Klassen erfordert jedoch eine spezielle Behandlung.

Problem:

Beim Versuch, ein von einer Basisklasse geerbtes Ereignis auszulösen, kann es zu einer entsprechenden Fehlermeldung kommen Das Ereignis kann nur auf der linken Seite von = oder -= erscheinen Operatoren.

Lösung:

Um geerbte Ereignisse auszulösen, müssen Sie geschützte Methoden in der Basisklasse erstellen, die zum Aufrufen der Ereignisse verwendet werden können. Diese Methoden sollten der Namenskonvention „OnEventName“ folgen.

Betrachten Sie beispielsweise die folgende Basisklasse:

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

Protected Event Raising Methods:

Erstellen Sie in der Basisklasse geschützte Methoden wie die folgenden:

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);
    }
}

Ereignisse auslösen in der abgeleiteten Klasse:

Rufen Sie in der abgeleiteten Klasse die geschützten Methoden auf, um die Ereignisse auszulösen:

public class DerivedClass : BaseClass
{
    public void DoSomething()
    {
        ...
        OnLoading(EventArgs.Empty);
        ...
        OnFinished(EventArgs.Empty);
    }
}

Hinweis:

  • Die geschützten Methoden können geändert werden, um zu prüfen, ob der Ereignishandler aufgerufen werden muss (z. B. durch Überprüfen handler.GetInvocationList().Length > 0).
  • Dieser Ansatz stellt sicher, dass Ereignisse in der gesamten Vererbungshierarchie auf konsistente Weise ausgelöst und behandelt werden können.

Das obige ist der detaillierte Inhalt vonWie löst man geerbte Ereignisse in C# richtig aus?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn