我们有自己的工具来创建Web api的文档。它读取///
注释并从中创建文档。但是,我们有一个奇怪的问题:表达式typeof(HttpResponseMessage)
奇怪地计算为null
。为什么会这样?
只需澄清一下:当我们在运行时读取程序集并创建文档时,HttpResponseMessage
中的MethodInfo.ReturnType
中包含一些API方法。这一工作没有问题。但是,当我们尝试检查类型是否为HttpResponseMessage
时,我们将执行if(methodInfo.ReturnType == typeof(HttpResponseMessage)
,如果总是计算为null
,则此处为右侧。当我在Visual Studio调试器中运行它并将typeof(HttpResponseMessage)
写入“监视”窗口时,它的计算结果也为null
。
(类型在System.Net.Http
中定义。)
sceenshot清楚地表明typeof在程序和Watch窗口中都返回null,但是parameterType变量实际上指向该类的类型对象。这是一个普通的Win32控制台应用程序。
答案 0 :(得分:0)
看起来我在这里碰到了一个奇怪的情况。 typeof运算符在从System.Net.Http程序集中导入的类型上返回null,该类型在项目中被引用,但是该文件位于C:\ Program Files \ Reference Assemblys中,我认为它不用于在运行时搜索程序集。并将引用设置为CopyLocal = false。因此,问题似乎是由该类型在编译时可用而不是在运行时可用引起的。如果类型丢失并且无法在运行时加载,我会期望出现异常,但是哇,这个运算符只是默默地抛出空值。
明天我将测试是否可以通过更正此不良引用来解决此问题。