通用内置EventArgs只保存一个属性?

时间:2010-06-19 19:47:23

标签: c# .net generics events fcl

我有许多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<T> : EventArgs
{
    private readonly T value;
    public GenericEventArgs(T v)
    {
        this.value = v;
    }
    public T Value
    {
        get { return this.value; }
    }    
}

P.S。 我写了一个suggestion on Microsoft Connect

3 个答案:

答案 0 :(得分:3)

如果一个,那肯定没有得到很好的宣传! (也就是说,这不是你意味着用于一般用途的东西,比如Func<T>。)我以前自己也想过同样的事情。这不是一个罕见的要求,IMO。

这样做的一个缺点是它没有一个有意义的属性名称,当然 - 它就像EventArgs相当于Tuple。但是,如果你有几个不同的用例, 实际上显而易见的含义是什么,那就去吧:)

答案 1 :(得分:2)

在底部的这个页面上,您可以看到所有类都是从EventArgs类继承的: http://msdn.microsoft.com/en-us/library/system.eventargs.aspx

最合适的是ReturnEventArgs http://msdn.microsoft.com/en-us/library/ms615572.aspx,但此类位于PresentationFramework.dll中,仅由WPF项目引用。

所以我建议你自己创建一个。

答案 2 :(得分:1)

我认为没有。
看起来你不是唯一一个问自己这个问题的人 看看here