这个测试不应该通过:
[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中的错误吗?
receiveDerivedMessagesToo表示您将收到从您注册的邮件类派生的邮件.这可行:
public class SpecificMessage : GenericMessage { }
据我所知,你不能注册一个泛型类型并接收从这个泛型派生的所有类型,因为GenericMessage<testClass>不是派生自GenericMessage<baseClass>.