Während ich in VS 2015 herumspielte, erstellte ich eine Eigenschaft und vertippte mich, bevor ich auf Tab traf. Das gab mir eine scheinbar sehr einfache Methode zum Erstellen eines Ereignisses. Ich bin nicht sicher, wie man das annimmt, um zusätzliche Parameter zu akzeptieren, um es Daten zu übergeben (wie ich normalerweise Daten weitergeben möchte, wenn er ein Ereignis mit Informationen darüber, was gerade ausgeführt wird, oder was getan wurde)Einfachste Möglichkeit, Ereignisse in einer Klasse zu erstellen
Der Code gab es als follows:
Auf den ersten Blick ist es ähnlich wie die meisten Beispiele, aber diese Methode scheint keine Delegierten zu erfordern. Vergleichen Sie mit dem folgende Beispiel von How to call an event manually in C#?
public delegate void MyEventHandler(object sender, MyEventArgs e)
public event MyEventHandler MyEvent;
public void RaisesMyEvent()
{
if(MyEvent != null) //required in C# to ensure a handler is attached
MyEvent(this, new MyEventArgs(/*any info you want handlers to have*/));
}
Was würde Ich mag wissen, im Lichte des elegantere (clean) Code hat, ist die Methode, die von Microsoft zur Verfügung gestellt (erstes Verfahrens in dieser Frage) besser (es scheint, sauberes), und wenn ja, wie könnte ich es leicht anpassen, um zusätzlich zu Standard-Ereignisargumenten eine Zeichenkette zu akzeptieren und/oder die Ereignisargumente zu erweitern, um Informationen weiterzuleiten?
@VisualVincent Sie brauchen keinen benutzerdefinierten Delegaten, um ein benutzerdefiniertes 'EventArgs' zu verwenden; Zu diesem Zweck gibt es einen generischen 'EventHandler'. –
@ThomasLevesque: Oh, das war mir eigentlich nicht bewusst. Danke, gute Nachricht! –
@ThomasLevesque - könnten Sie ein Beispiel dafür geben. Wenn ich versuche, ein neues Objekt auf der Basis von TEeventArgs zu erstellen, erhalte ich Fehler in meiner Idee, die mich auffordern, eine Eigenschaft mit diesem Namen zu erstellen (es scheint auch nicht zu existieren). –