在MVVMLight中接收派生类型的消息

时间:2010-06-06 12:22:57

标签: c# mvvm-light

此测试不应通过:

[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&lt; T>,测试通过。它是galasoft mvvm light或feature中的错误吗?

1 个答案:

答案 0 :(得分:6)

receiveDerivedMessagesToo表示您将收到从您注册的邮件类派生的邮件。这可行:

public class SpecificMessage : GenericMessage { }

据我所知,您无法注册一个通用类型并接收从此通用类型派生的所有类型,因为GenericMessage<testClass>不是从GenericMessage<baseClass>派生的。