此测试不应通过:
[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中的错误吗?
答案 0 :(得分:6)
receiveDerivedMessagesToo
表示您将收到从您注册的邮件类派生的邮件。这可行:
public class SpecificMessage : GenericMessage { }
据我所知,您无法注册一个通用类型并接收从此通用类型派生的所有类型,因为GenericMessage<testClass>
不是从GenericMessage<baseClass>
派生的。