在运行时无法检查类的类型

时间:2019-10-23 22:49:36

标签: .net-core

这是我正在处理的.NET Core应用程序中遇到的一个奇怪的小问题。我正在为从消息队列中反序列化的消息编写一些消息处理程序,消息处理程序具有确定它们是否可以处理特定消息的功能:

public class DoWorkMessageHandler : IMessageHandler
{
  public bool CanHandle(Message message)
  {
    return message is DoWorkMessage;
  }
}

public class DoWorkMessage : Message
{
}

如果我让代码运行,反序列化DoWorkMessage并将其传递给方法,它将返回false,这不是我期望的。但是,如果我在其中放置一个断点,并在VS2019的“即时”窗口中运行相同的表达式,则其求值为true。从调试器中我可以看到message确实是DoWorkMessage,那么为什么它的评估结果不正确?

如果我将逻辑更改为:

public bool CanHandle(Message message)
{
  return message.GetType().AssemblyQualifiedName == typeof(DoWorkMessage).AssemblyQualifiedName;
}

然后代码按预期工作-为什么message is DoWorkMessage不起作用(除非我在“即时”窗口中执行它)?

0 个答案:

没有答案