Общие встроенные EventArgs для хранения только одного свойства? - PullRequest
6 голосов
/ 19 июня 2010

У меня есть несколько классов 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. Я написал предложение по Microsoft Connect

Ответы [ 3 ]

3 голосов
/ 19 июня 2010

Если есть - единица, это, конечно, не так широко освещается! (т. е. это не то, что вы имели в виду , чтобы использовать для вещей общего назначения, например Func<T>.) Я уже думал об этом раньше. Это не редкое требование, ИМО.

Недостатком этого является то, что у него, конечно, нет значащего имени для свойства - это похоже на EventArgs эквивалент Tuple. Но если у вас есть несколько различных вариантов использования для этого, и будет на самом деле будет очевидно, в чем смысл, пойдите для этого:)

2 голосов
/ 19 июня 2010

На этой странице внизу вы можете видеть, что все классы унаследованы от класса EventArgs: http://msdn.microsoft.com/en-us/library/system.eventargs.aspx

Наиболее подходящим является ReturnEventArgs http://msdn.microsoft.com/en-us/library/ms615572.aspx, но этот класс находится в PresentationFramework.dll, чтоНа него ссылаются только проекты WPF.

Поэтому я рекомендую создать свой собственный.

1 голос
/ 19 июня 2010

Я не думаю, что есть.
Похоже, вы не единственный, кто задал себе этот вопрос.
Взгляните здесь

...