如何使用Community Toolkit Messenger在.net 6静态类中接收消息



我正在使用Microsoft Community Toolkit的默认Messenger在我的程序中的模块之间发送消息,它工作得很好-直到我尝试在静态类中接收消息。

  • 我不能让类从observablerreceiver派生,因为它是静态的。
  • 我不能实现ireceiver,因为它是静态的。我不能使用WeakReferenceManager.Default。Register(this, (r, m) =>mshandler (m))因为我不能使用"this">
  • WeakReferenceMessenger.Default.Register (ClassName.handler(r, m) =>handler(m.newStat))可以编译,但是"handler"不在消息发送时调用。

我一直在微软学习Messenger和Register页面上挣扎,但我知道的不够,无法跟上描述。(这些特殊的页面似乎是由专家为专家写的,我不够专业(或聪明),搞不懂他们在说什么。)

我的问题是:静态类可以接收消息(似乎很可能),如果可以,我必须使用什么语法来注册?它一定是上面最后一个例子的某种变体,但我还没能弄清楚它会是什么。

谢谢。

我刚刚开始将我的应用程序从使用event和EventHandler更改为WeakReferenceMessenger,并遇到了静态类的相同情况。我的解决方案是使用

typeof(classname), (r, m) =>

不是

this, (r, m) =>

,并按预期调用lambda。

一个类似的解决方案是在类的顶部定义一个名为me的变量,如下:
private static readonly Type me = typeof(classname);

然后使用

me, (r, m) =>

最新更新