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

问题描述 投票:0回答:1

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

  • 我无法让该类从 ObservableRecipient 派生,因为它是静态的。
  • 我无法实现 IRecipient,因为它是静态的。
  • 我无法使用 WeakReferenceManager.Default.Register(this, (r, m) => MsgHandler(m)) 因为我无法在静态类中使用“this”。
  • WeakReferenceMessenger.Default.Register(ClassName.handler, (r, m) => handler(m.newStat)) 编译正常,但“handler”不行 消息发送后会接到电话。

我一直在努力浏览有关 Messenger 和 Register 的 Microsoft Learn 页面,但我的了解还不够,无法理解这些描述。 (这些特定的页面似乎是由专家为专家编写的,我不够专业(或聪明),无法弄清楚他们在说什么。)

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

谢谢。

mvvm message static-methods toolkit
1个回答
0
投票

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

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

而不是

this, (r, m) =>

并且 lambda 被按预期调用。

© www.soinside.com 2019 - 2024. All rights reserved.