2012-03-03 4 views
0

例外タイプのメッセージを特定のトークンで送信/登録したいとします。 exは例外の種類である、と私は(たとえば、InvalidOperationExceptionがために)派生例外が発生した場合はMessenger.SendToTargetOrTypeとmessageTypeキー

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

、そのメッセージは常にfalseを返します

if (_recipientsStrictAction.ContainsKey(messageType)) 

いるので、配信されることはありません。 Messengerを間違って使用しているのですか、これはバグですか?

Type messageType = message.GetType(); 

Type messageType = typeof(TMessage); 

答えて

0

を使用すると、特定のメッセージ・タイプではなく、そこから派生するすべてのメッセージタイプにしか興味はないメッセンジャーにinicateには余りにもreceiveDerivedMessagesを使用する必要があります。

登録が使用する実際のオーバーロードは、次のとおりです。

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

だからあなたの登録は次のようになります。

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

おかげで、その1つのに気付きませんでした。 – Goran