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);
    }
  }
}

在字典中使用相同键添加到链中的委托将具有相同的方法签名。
如果我将“委托”替换为特定的操作,例如操作,上面的代码就可以工作。

所以我的问题是:
是否可以在没有替换且没有大量“黑客攻击”的情况下做同样的事情?

4

1 回答 1

1

有什么理由你不能这样做:

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