【问题标题】:Receive messages for derived types in MVVMLight在 MVVMLight 中接收派生类型的消息
【发布时间】:2010-06-06 12:22:57
【问题描述】:

这个测试不应该通过吗:

[TestMethod]
public void derived_message_subscription()
{
    bool handled = false;
    Messenger.Default.Register<GenericMessage<baseClass>>(this, true, (msg) => handled = true);
    Messenger.Default.Send(new GenericMessage<testClass>(new testClass()));
    Assert.IsTrue(handled);
}

public abstract class baseClass { }
public class testClass : baseClass { }

我必须接收从一个基类继承的类的所有消息。 MVVMLight 在 Register 方法中有 bool 属性 receiveDerivedMessagesToo,但在我看来它不起作用。

请注意,当我不使用 GenericMessage 时,测试通过。是 galasoft mvvm light 中的 bug,还是功能中的 bug?

【问题讨论】:

    标签: c# mvvm-light


    【解决方案1】:

    receiveDerivedMessagesToo 表示您将收到派生自您注册的消息类的消息。这会起作用:

    public class SpecificMessage : GenericMessage { }

    据我所知,您无法注册到一种泛型类型并接收从该泛型派生的所有类型,因为GenericMessage&lt;testClass&gt; 不是从GenericMessage&lt;baseClass&gt; 派生的。

    【讨论】:

    • 是的,这也是我的结论。
    • 所以我对此进行了一段时间的讨论,但我无法弄清楚你是如何解决这个问题的 - 为通用消息类型初学者提供更多代码?请!谢谢....
    • @codputer:我已经编辑了一些关于泛型的更多见解
    猜你喜欢
    • 1970-01-01
    • 2023-03-06
    • 2012-07-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多