Parametrize generic event system (DRY it)

Hey guys, been checking out some messaging systems lately. I came across the CSharpMessengerExtended - Kinda nice, but not very DRY - very repetitive, lot’s of copy-pasting.

See my question here, as nobody seems to have answered it.

(Nice sad humor in the comments as well =))

Thanks for any help.

I don’t have any quick idea how to solve your problem the way you’d like it, but maybe an option is to always send data using a class derived from some base class? Just like in standard .NET event system, where EventArgs (or derived class) is used.

If you want to use a message with no parameters, then you just use EventArgs.Empty (or eventually pass null). If you want any parameters, then create a class derived from EventArgs with a properties of your desired types.

This method requires creating new classes, but in my opinion this is much better than having unnamed generic parameters. With such generic parameters, browsing through code after a few weeks will be more painful, as you’ll scratch your head trying to find out what the hell this int, long and string actually mean. Dedicated class with properties having descriptive names is a much better option. That’s why I never use classes from Tuple family (not supported in Unity yet).