Meine Klasse mit einem Ereignis:Events Konvention - Ich verstehe es nicht
public class WindowModel
{
public delegate void WindowChangedHandler(object source, WindowTypeEventArgs e);
public event WindowChangedHandler WindowChanged;
public void GotoWindow(WindowType windowType)
{
this.currentWindow = windowType;
this.WindowChanged.Invoke(this, new WindowTypeEventArgs(windowType));
}
}
Abgeleitet Ereignisklasse:
public class WindowTypeEventArgs : EventArgs
{
public readonly WindowType windowType;
public WindowTypeEventArgs(WindowType windowType)
{
this.windowType = windowType;
}
}
Einige andere Klasse, die es auf das Ereignis registrieren:
private void SetupEvents()
{
this.WindowModel.WindowChanged += this.ChangeWindow;
}
private void ChangeWindow(object sender, WindowTypeEventArgs e)
{
//change window
}
Was habe ich durch die Einhaltung der .Net-Konvention gewonnen? Es würde mehr Sinn machen, einen Vertrag zu haben wie diese
public delegate void WindowChangedHandler(WindowType windowType);
public event WindowChangedHandler WindowChanged;
es auf diese Weise tun, brauche ich nicht eine neue Klasse zu erstellen und ist leichter zu verstehen. Ich codiere keine .Net-Bibliothek. Dieser Code wird nur in diesem Projekt verwendet. Ich mag Konventionen, aber habe ich recht, wenn ich sage, dass es in diesem Beispiel keinen Sinn ergibt oder etwas missverstanden wurde?
Ich mag diese Antwort! Der erste Punkt ist so offensichtlich, aber etwas, an das ich nicht gedacht habe. Zweiter Punkt wusste ich nicht, aber es ist sehr schön :) Nicht sicher, ich verstehe Ihren dritten Punkt. Vielen Dank! –
@bobjink: Schön, dass es hilfreich ist! Mein dritter Punkt war, Daten an das Objekt zurücksenden zu können, das das Ereignis aufruft. Mit der 'EventArgs'-Methode können Sie dem Consumer Ihres Events erlauben, eine Eigenschaft auf ihm zu ändern, wie in der' CancelEventArgs'-Klasse, die es Ihnen ermöglicht, Daten an Sie zurück zu geben. –
Ich sehe jetzt! Vielen Dank :) –