2012-04-21 2 views
0

я хочу сделать следующее:C# Цепные Делегаты вместе с «неизвестными» подписи

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, приведенный выше код будет работать.

Так что мой вопрос:
Можно ли сделать то же самое без замены и без большого количества «взлома»?

ответ

1

Есть ли какой-либо причине вы не можете сделать это:

handlers[registerMethodMsg.MethodName] = 
    Delegate.Combine(
     handlers[registerMethodMsg.MethodName], 
     registerMethodMsg.Handler); 
+0

Спасибо за лечить мою слепоту, только то, что я искал. – Arokh

Смежные вопросы