Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/268.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# MVVM:仅使用带有自定义对象的Messenger发送<&燃气轮机&引用;id";独特的?_C#_Wpf_Mvvm_Send_Mediator - Fatal编程技术网

C# MVVM:仅使用带有自定义对象的Messenger发送<&燃气轮机&引用;id";独特的?

C# MVVM:仅使用带有自定义对象的Messenger发送<&燃气轮机&引用;id";独特的?,c#,wpf,mvvm,send,mediator,C#,Wpf,Mvvm,Send,Mediator,我不喜欢我使用的Messenger(mvvm light toolkit),当我注册到DateTime并发送一些东西时,我的应用程序的其他部分也会获得datatime数据,因为它们注册到了“DateTime”类型 为了防止这种情况发生,我必须始终创建自定义对象并包装日期时间值。 那是斯帕蒂 你如何解决这个问题?发送日期时间类型的消息对我来说似乎是个坏主意。。。它不够具体,没有任何意义 假设你收到一封只包含日期的信,而没有其他内容:你会怎么看?是生日,电影的发行日期,还是支付电话费的最后期限 没有

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

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


你如何解决这个问题?

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

假设你收到一封只包含日期的信,而没有其他内容:你会怎么看?是生日,电影的发行日期,还是支付电话费的最后期限


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

发送日期时间类型的消息对我来说似乎不是个好主意。。。它不够具体,没有任何意义

假设你收到一封只包含日期的信,而没有其他内容:你会怎么看?是生日,电影的发行日期,还是支付电话费的最后期限


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

您可以使用令牌对象发送消息,然后仅注册使用该特定令牌发送的日期时间

我似乎记得拉伦特创建了这样一个类:

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; });
Messenger.Default.Register(此,Notifications.SystemDateChanged,true,
d=>{mydate=d;});

您可以使用令牌对象发送邮件,然后仅注册使用该特定令牌发送的日期时间

我似乎记得拉伦特创建了这样一个类:

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; });
Messenger.Default.Register(此,Notifications.SystemDateChanged,true,
d=>{mydate=d;});

好的,托马斯,这就是我的想法。那么,您是否为您发送的每个新datetime创建一个具有一个datetime属性的新的额外类?我为每种特定类型的消息创建一个message类,是的。您可以将其命名为message类。这门课有什么特别的吗?或者它只是一个带有属性datetime的自定义类?不,没有什么特别的,它可以是任何自定义类OK Thomas这就是我所说的。那么,您是否为您发送的每个新datetime创建一个具有一个datetime属性的新的额外类?我为每种特定类型的消息创建一个message类,是的。您可以将其命名为message类。这门课有什么特别的吗?或者它只是一个具有属性datetime的自定义类?不,没有什么特别的,它可以是任何自定义类