2012-03-03 69 views
0

可以說我想用特定的令牌發送/註冊類型爲Exception的消息。Messenger.SendToTargetOrType和messageType鍵

Messenger.Default.Register(recipient, MessageType.RaiseException, action); 
... 
Messenger.Default.Send<Exception>(ex, MessageType.RaiseException); 

如果EX是異常類型,我收到一個派生的異常(例如InvalidOperationException異常),則消息將永遠不會被送達,因爲

if (_recipientsStrictAction.ContainsKey(messageType)) 

將始終返回false。我錯誤地使用Messenger,或者這是一個錯誤?如果

Type messageType = message.GetType(); 

Type messageType = typeof(TMessage); 

回答

0

使用receiveDerivedMessages太inicate來,你是不是隻在特定的消息類型感興趣的使者,但在享受它所帶來的所有消息類型。

的實際過載註冊使用的是:

Register<TMessage>(
    object recipient, 
    object token, 
    bool receiveDerivedMessagesToo, 
    Action<TMessage> action 
) 

所以你的註冊應該是這樣的:

Messenger.Default.Register(recipient, MessageType.RaiseException, true, action); 
+0

謝謝,沒有注意到一個。 – Goran 2012-03-07 16:32:18