tags:

views:

50

answers:

1

Is there something like this already available in the .NET framework?

public class EventArgs<T> : EventArgs {
    private readonly T data;

    public EventArgs(T data) {
        this.data = data;
    }
}

I know there is a generic event handler, I'm kinda surprised I can't find a generic EventArgs class.

Thanks

+7  A: 

No. Mainly because it fails the tests posed before something it added to the framework

  • How useful is it? (Marginly -- only useful if you only need one data member. As opposed to EventHandler<> which is good for event handler regardless of the number of parameters used.)
  • How hard is it to write yourself? (not very hard)
  • Is it needed in the framework itself? (No. Distinct classes are used, so new members could be added in the future if needed. As opposed to Func<> & Action<> which are used by the framework.)

(UPDATED based on comments)

James Curran
It's certainly as useful as having a EventHandler<T>. Yet, that one exists.
devoured elysium
+1 - I have to agree with this, inheriting and adding the properties you need seems much more useful in most cases.
Nick Craver
You could have something like EventArgs<T>, EventArgs<T, K>, EventArgs<T, K, Z>, etc. It'd certainly ease up things and wouldn't give them any trouble doing so. It's like saying there is really no point in having all those Action<...> and Func<...>.
devoured elysium
@devoured - `Func` is supported in the language's syntax, and is widely useful. `EventArgs<T, K, Z>` will just let you create event arguments with properties **without meaningful names** (like a Tuple) - something that you probably want to avoid.
Kobi