6

我有许多 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; }
    }    
}

PS 我在 Microsoft Connect 上写了一个建议

4

3 回答 3

3

如果有的,肯定不会被广泛宣传!(即,这不是您打算用于通用用途的东西,例如Func<T>。)我自己以前也想过同样的事情。这不是一个罕见的要求,IMO。

这样做的一个缺点是它没有一个有意义的属性名称,当然 - 它EventArgs就像Tuple. 但是,如果您对此有几个不同的用例,并且实际上含义很明显,那就去吧:)

于 2010-06-19T19:53:47.597 回答
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 项目引用。

所以我建议创建自己的。

于 2010-06-19T19:56:14.010 回答
1

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

于 2010-06-19T19:54:46.580 回答