Я пытаюсь реализовать EventArgs для передачи списка параметров в мою систему обмена сообщениями: Вопрос .
Я вложил в подкласс EventArgs:
public class SingleParameterArgs<T> : EventArgs
{
public T arg1;
public SingleParameterArgs(T _arg1)
{
arg1 = _arg1;
}
}
Вот класс и метод, которые должны принимать EventArgs:
static public class Messenger<TEventArgs> where TEventArgs : EventArgs {
private static Dictionary< string, EventHandler<TEventArgs> > eventTable = new Dictionary< string, EventHandler<TEventArgs> >();
static public void Invoke(string eventType, TEventArgs args) {
EventHandler<TEventArgs> eventHandler;
if (eventTable.TryGetValue(eventType, out eventHandler)) {
if (eventHandler != null)
eventHandler();
}
}
}
Перед реализацией EventArgs я бы вызвал сообщение следующим образом:
Messenger<GameEndingType>.Invoke( "end game", GameEndingType.TimeEnded );
Но теперь это выглядит намного длиннее и сложнее:
Messenger< SingleParameterArgs<GameEndingType> >.Invoke( "end game", new SingleParameterArgs<GameEndingType>(GameEndingType.TimeEnded) );
Можно ли заставить его выглядеть короче? Я не хочу вводить такую длинную строку каждый раз, когда мне нужно отправить сообщение. Может быть, я мог бы создать обертку?
Примерно так было бы идеально:
Messenger.Invoke («конец игры», GameEndingType.TimeEnded);
Каков наилучший способ создания единой оболочки для случайного количества параметров?