我有一个应用程序,我在另一个视图模型中打开一个新视图(使用视图模型)。新的 Viewmodel 需要来自调用者 viewmodel 的一些参数。
现在我介绍了一个名为 Messenger 的类,它看起来像:
public class Messenger
{
private static Messenger instance;
public static Messenger Instance
{
get { return instance ?? (instance = new Messenger()); }
}
private Messenger() { }
public void SendMessage(Message message)
{
OnMessageSent temp = MessageSent;
if (temp != null)
temp(message);
}
public delegate void OnMessageSent(Message message);
public event OnMessageSent MessageSent;
}
消息类如下所示:
public class Message
{
public Type TargetType { get; set; }
public object Sender { get; set; }
public Type ValueType { get; set; }
public object Value { get; set; }
public string AdditionalInfo { get; set; }
}
这座建筑的用途是:
消息的接收者视图模型必须添加
Messenger.Instance.MessageSent += MessageSent;
到它的构造函数。在实现中可以看起来像:
private void MessageSent(Message message)
{
if(message.TargetType == typeof(SecondViewModel))
{
if (message.ValueType == typeof (double))
{
this.MyValue= (double) message.Value;
}
}
}
这工作正常。我的问题是:这是视图模型之间通信的好方法,还是这种设计有任何弱点?