IMessenger.Send отсутствует перегрузка, которая принимает токен - PullRequest
0 голосов
/ 27 июня 2010

Не уверен, что это было дизайнерское решение, но IMessenger.Send, похоже, отсутствует перегрузка, которая принимает токен

1 Ответ

2 голосов
/ 28 июня 2010

Предполагая, что под "токеном" вы подразумеваете строку, которая идентифицирует что-то в сообщении, вы можете сделать несколько вещей.

  1. Вы можете использовать класс NotificationMessage в качестве отправляемого сообщения.

    Messenger.Default.Send(new NotificationMessage("Token"));
    
  2. Если вы хотите использовать что-то кроме строки в качестве токена, вы можете использовать NotificationMessage.

    Messenger.Default.Send(new NotificationMessage<IToken>(new Token()));
    
  3. Вы можете создать свой собственный класс сообщений и использовать его. Это позволяет вам регистрироваться только для сообщений вашего пользовательского типа. Это то, что я рекомендую.

    public class ErrorMessage : GenericMessage<Exception>
    {
        public ErrorMessage(Exception content) : base(content)
        {
        }
        public ErrorMessage(object sender, Exception content) : base(sender, content)
        {
        }
        public ErrorMessage(object sender, object target, Exception content) : base(sender, target, content)
        {
        }
    }
    
...