Generisches Einbau-EventArgs nur eine Eigenschaft zu halten?
Frage
Ich habe eine Reihe von EventArgs Klassen mit nur einem Feld und eine entsprechende Eigenschaft, es zu lesen:
public class SomeEventArgs : EventArgs
{
private readonly Foo f;
public SomeEventArgs(Foo f)
{
this.f = f;
}
public Foo Foo
{
get { return this.f; }
}
}
Gibt es eine eingebaute, generische Klasse ein solches Verhalten zu implementieren, oder muss ich meine eigene Rolle?
public class GenericEventArgs<T> : EventArgs
{
private readonly T value;
public GenericEventArgs(T v)
{
this.value = v;
}
public T Value
{
get { return this.value; }
}
}
P. S. Ich schrieb einen Vorschlag auf Microsoft Connect
Lösung
Ich glaube nicht, es gibt.
Sieht aus wie Sie sind nicht der einzige, sich diese Frage zu stellen.
Werfen Sie einen Blick hier
Andere Tipps
Wenn es is ein, es ist sicherlich nicht gut veröffentlicht! (Das heißt, es ist nicht etwas, das Sie bedeutet zu Verwendung für allgemeine Sachen, wie Func<T>
.) Ich über die gleiche Sache mir gedacht habe jetzt vor. Es ist keine seltene Anforderung, IMO.
Ein Nachteil davon ist, dass es nicht einen aussagekräftigen Namen für die Eigenschaft hat, natürlich - es ist wie ein EventArgs
äquivalent Tuple
. Aber wenn Sie haben verschiedene Anwendungsfälle für dieses und es wird eigentlich klar sein, was die Bedeutung ist, denn es gehen:)
Auf dieser Seite unten Sie alle Klassen von EventArgs Klasse vererbt werden sehen: http://msdn.microsoft.com/en-us/library/ system.eventargs.aspx
Die am besten geeignete ist ReturnEventArgs http://msdn.microsoft.com/ en-us / library / ms615572.aspx aber diese Klasse in PresentationFramework.dll befindet, die nur von WPF-Projekten verwiesen wird.
Also ich empfehlen, einen eigenen zu erstellen.