-1

我们有自己的工具来创建我们的 web api 文档。它读取///评论并从中创建文档。但是我们有一个奇怪的问题:表达式typeof(HttpResponseMessage)奇怪地计算为null. 为什么会发生这种情况?

澄清一下:当我们在运行时读取程序集并创建文档时,我们有HttpResponseMessage一些MethodInfo.ReturnTypeAPI 方法。这个工作没有问题。但是当我们尝试检查类型是否为HttpResponseMessage时,我们会这样做if(methodInfo.ReturnType == typeof(HttpResponseMessage),并且这里 if 的右侧总是计算为null。当我在 Visual Studio 调试器中运行它并写入typeof(HttpResponseMessage)Watch 窗口时,它的计算结果null也为。

(类型在 中定义System.Net.Http。)

这是调试器的屏幕截图,显示这是真实的: 在此处输入图像描述

截图清楚地显示了typeof在程序和Watch窗口中都返回null,但parameterType变量实际上指向该类的类型对象。它是一个普通的 Win32 控制台应用程序。

4

1 回答 1

0

看起来我在这里遇到了一个奇怪的边缘案例。typeof 运算符对从项目中引用的 System.Net.Http 程序集导入的类型返回 null,但该文件位于 C:\Program Files\Reference Assemblies 中,我认为它不用于在运行时搜索程序集。并且引用设置为 CopyLocal=false。因此,问题似乎是由编译时可用的类型引起的,而不是在运行时可用。如果缺少类型并且无法在运行时加载,我会期望出现异常,但是哇,这个运算符只是默默地抛出空值。

如果我可以通过更正这个错误的参考来解决问题,我将在明天进行测试。

于 2018-07-18T17:36:52.763 回答