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( "end game"、GameEndingType.TimeEnded);
ランダムな量のパラメーターに対して均一なラッパーを作成するための最良の方法は何ですか?