У нас есть собственный инструмент для создания документации по нашему веб-API. Он читает ///
комментарии и создает на их основе документацию. Но у нас есть одна странная проблема: выражение typeof(HttpResponseMessage)
странным образом оценивается как null
. Почему так происходит?
Чтобы уточнить: когда мы читаем сборки во время выполнения и создаем документацию, у нас есть HttpResponseMessage
в MethodInfo.ReturnType
некоторых методов API. Этот работает без проблем. Но когда мы пытаемся проверить, является ли тип HttpResponseMessage
, мы делаем if(methodInfo.ReturnType == typeof(HttpResponseMessage)
, и здесь правая часть этого, если всегда оценивается как null
. Когда я запускаю его в отладчике Visual Studio и пишу typeof(HttpResponseMessage)
в окно Watch, он тоже оценивается как null
.
(Тип определен в System.Net.Http
.)
Вот снимок экрана отладчика, показывающий, что это реально:
На снимке ясно видно, что typeof возвращает null как в программе, так и в окне Watch, но переменная parameterType фактически указывает на объект типа этого класса. Это обычное консольное приложение Win32.
typeof(HttpResponseMessage)
действительно возвращал null. Вполне возможно, что здесь возникают проблемы с отладчиком - было бы лучше, если бы ваш пример присвоил значение переменной и сравнил его с null. - person Jon Skeet   schedule 18.07.2018typeof(HttpResponseMessage)
возвращение null, к сожалению, труднее поверить, чем ошибка пользователя. Я хотел бы увидеть минимальный воспроизводимый пример, демонстрирующий эту проблему. AFAIK,typeof(x)
может возвращать только null, если рассматриваемый класс является динамическим классом, созданным в памяти. Здесь дело обстоит не так. - person   schedule 18.07.2018typeof(T)
может возвращать значение null - person   schedule 18.07.2018typeof
работает только для типов, существующих во время компиляции. Типы, созданные во время выполнения, не применяются. Я знаю, что это не относится к вашему случаю, я уже сказал об этом в своем первом комментарии. - person   schedule 18.07.2018ReflectionOnly
? - person Damien_The_Unbeliever   schedule 18.07.2018typeof(System.Net.Http.HttpContent)
также будет выглядеть как null? У вас есть несколько версий этой сборки? Вам все равно нужно предоставить нам полностью воспроизводимый образец. С этого tio.run кода, все кажется нормальным . - person Jeppe Stig Nielsen   schedule 18.07.2018