我正在尝试实现 EventArgs 以将参数列表传递给我的消息传递系统:Question。
我将 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("end game", GameEndingType.TimeEnded);
为随机数量的参数创建统一包装器的最佳方法是什么?