我想做以下事情:
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);
}
}
}
使用字典中相同的键添加到链中的委托具有相同的方法签名 如果我用“Action”这样的特定代码替换“Delegate”,上面的代码就可以了。
所以我的问题是:
是否有可能在没有替换且没有大量“黑客攻击”的情况下做同样的事情?
答案 0 :(得分:1)
有什么理由你不能这样做:
handlers[registerMethodMsg.MethodName] =
Delegate.Combine(
handlers[registerMethodMsg.MethodName],
registerMethodMsg.Handler);