我不喜歡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