我不喜欢Messenger使用的(mvvm light toolkit),当我注册到DateTime并发送其他应用程序的某些内容时,也会获取datatime数据,因为它们注册为“DateTime”类型。MVVM:仅使用自定义对象的Messenger来使Send <>“id”唯一?
为了防止我必须始终创建自定义对象并包装我的日期时间值。 那就是stupi。
你如何解决这个问题?
我不喜欢Messenger使用的(mvvm light toolkit),当我注册到DateTime并发送其他应用程序的某些内容时,也会获取datatime数据,因为它们注册为“DateTime”类型。MVVM:仅使用自定义对象的Messenger来使Send <>“id”唯一?
为了防止我必须始终创建自定义对象并包装我的日期时间值。 那就是stupi。
你如何解决这个问题?
发送DateTime
类型的消息对我来说似乎是个不好的主意......它不够具体,它没有任何意义。
想象一下,你会收到一封只包含日期的信件,而没有其他信息:你会怎么做?它是一个生日,电影的发行日期,支付电话费的截止日期?
日期(或字符串,或int,或任何基元类型)没有上下文意味着什么。您需要创建特定的消息类型,这是您发送的信息具有意义的唯一方式。
您可以使用标记对象发送消息,然后仅为使用该特定标记发送的DateTime进行注册。
我似乎记得Laruent创建一个类是这样的:
public class Notifications
{
public static readonly String SystemDateChanged = Guid.NewGuid().ToString();
public static readonly String SomeOtherDateChanged = Guid.NewGuid().ToString();
}
然后发出消息
Messenger.Default.Send(newSystemDateTime, Notifications.SystemDateChanged);
双方感兴趣的SystemDateTime(而不是其他日期时间)将它注册
Messenger.Default.Register<DateTime>(this, Notifications.SystemDateChanged, true,
d => { mydate = d; });
好的托马斯,这是我所做的。那么你是否为每发送一个新的日期时间创建一个新的带有一个日期时间属性的额外类? – Elisabeth 2010-10-31 23:43:05
我为每种特定类型的消息创建一个消息类,是的。 – 2010-11-01 00:49:46
你把它命名为消息类。这个班有什么特别的吗?或者它只是一个属性日期时间的自定义类? – Elisabeth 2010-11-01 19:59:12