1

我不喜欢我使用的 Messenger(mvvm light 工具包),当我注册到 DateTime 并发送一些东西时,我的应用程序的其他部分也会获取数据时间数据,因为它们注册为“DateTime”类型。

为了防止这种情况发生,我必须始终创建自定义对象并包装我的日期时间值。那是愚蠢的。

你如何解决这个问题?

4

2 回答 2

1

发送类型的消息DateTime对我来说似乎是个坏主意……它不够具体,没有任何意义。

想象一下,你收到一封只包含日期的信,没有其他内容:你会怎么做?是生日、电影的上映日期、支付电话费的最后期限吗?

日期(或字符串、int 或任何原始类型)没有上下文就没有任何意义。您需要创建特定的消息类型,这是您发送的信息有意义的唯一方式。

于 2010-10-31T23:32:43.650 回答
0

您可以使用令牌对象发送消息,然后仅注册使用该特定令牌发送的 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; });
于 2011-01-06T01:09:15.700 回答