3

这个测试不应该通过吗:

[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 < T > 时,测试通过。它是 galasoft mvvm light 还是功能中的错误?

4

1 回答 1

6

receiveDerivedMessagesToo意味着您将收到从您注册的消息类派生的消息。这会起作用:

public class SpecificMessage : GenericMessage { }

据我所知,您无法注册到一种泛型类型并接收从该泛型派生的所有类型,因为GenericMessage<testClass>它不是从GenericMessage<baseClass>.

于 2010-09-02T13:41:10.887 回答