У меня есть много классов EventArgs только с одним полем и соответствующим свойством для чтения его:
public class SomeEventArgs : EventArgs
{
private readonly Foo f;
public SomeEventArgs(Foo f)
{
this.f = f;
}
public Foo Foo
{
get { return this.f; }
}
}
Есть ли какой-либо встроенный, универсальный класс для реализации такого поведения, или я должен прокрутить свое собственное?
public class GenericEventArgs : EventArgs
{
private readonly T value;
public GenericEventArgs(T v)
{
this.value = v;
}
public T Value
{
get { return this.value; }
}
}
P.S. Я записал предложение на Microsoft Connect
Думаю, что нет.
Похоже, вы не единственный, кто задает себе этот вопрос.
Взгляните здесь
На этой странице внизу вы можете увидеть, что все классы унаследованы от класса EventArgs: http://msdn.microsoft.com/en-us/library/system.eventargs.aspx
Наиболее подходящим является ReturnEventArgs http://msdn.microsoft.com/en-us/library /ms615572.aspx, но этот класс находится в PresentationFramework.dll, на который ссылаются только проекты WPF.
Поэтому рекомендую создать свой собственный.
Если там есть , то это, конечно, плохо освещается! (т.е. это не то, что вы имели в виду для использования в общих целях, например Func
.) Я сам думал о том же раньше. Это не редкость, ИМО.
Одним из недостатков этого является то, что у него, конечно, нет значимого имени для свойства - это похоже на EventArgs
эквивалент Tuple
. Но если у вас есть несколько разных вариантов использования для этого, и на самом деле будет очевидным, в чем смысл, сделайте это :)