私が使用しているMessenger(mvvm light toolkit)の嫌いな点は、DateTimeに登録してアプリケーションの他の部分を送信すると、「DateTime」タイプに登録されているため、データ時間データも取得することです。
これを防ぐには、常にカスタムオブジェクトを作成し、日時の値をラップする必要があります。それは愚かです。
その問題をどのように回避しますか?
タイプのメッセージを送信する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(他の日時ではない)に関心のある当事者は、SystemDateTimeに登録します
Messenger.Default.Register<DateTime>(this, Notifications.SystemDateChanged, true,
d => { mydate = d; });