0

私は次のことをしたい:

private static Dictionary<string, Delegate> handlers = new Dictionary<string, Delegate>();
private static void RecievedMessage(object sender, RecievedMessageEventArgs e) {
  if(e == null  || e.Message == null) return;

  if(e.Message is RegisterMethodMessage) {
    var registerMethodMsg = (RegisterMethodMessage)e.Message;
    if(handlers.ContainsKey(registerMethodMsg.MethodName)) {
      handlers[registerMethodMsg.MethodName] += registerMethodMsg.Handler; //Error
    } else {
      handlers.Add(registerMethodMsg.MethodName, registerMethodMsg.Handler);
    }
  }
}

ディクショナリ内の同じキーでチェーンに追加されたデリゲートは、同じメソッドシグネチャを持ちます。
「Delegate」をActionのような特定のコードに置き換えると、上記のコードは機能します。

だから私の質問は:
置換なしで、そして多くの「ハッキング」なしで同じことをすることは可能ですか?

4

1 に答える 1

1

これができない理由はありますか?

handlers[registerMethodMsg.MethodName] =
    Delegate.Combine(
        handlers[registerMethodMsg.MethodName],
        registerMethodMsg.Handler);
于 2012-04-21T20:03:22.420 に答える