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

Hrv*_*udo 3 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 { }
Run Code Online (Sandbox Code Playgroud)

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

请注意,当我不使用GenericMessage <T>时,测试通过.它是galasoft mvvm light或feature中的错误吗?

Ale*_*x B 6

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

public class SpecificMessage : GenericMessage { }

据我所知,你不能注册一个泛型类型并接收从这个泛型派生的所有类型,因为GenericMessage<testClass>不是派生自GenericMessage<baseClass>.