например.
а я вижу, чтоtypeof(Foo)
возвращает ноль Почему это случилось?
Это в C #, .NET 3.5.
Я думал, что это может быть связано со сборкой, содержащей тип, который еще не загружен, но тестовое приложение показывает, что сборка загружается в начале метода, гдеtypeof
используется.
Есть идеи?
Обновление 1
Я не могу предоставить воспроизводимый образец, так как это происходит в огромном приложенииКогда я говорю «иногда», я имею в виду тот же метод в моем приложении, но в разных случаях. Кроме того, когда однажды происходит сбой во время работы, каждый раз происходит сбой для этого экземпляра приложения.Обновление 2
Рассматриваемое приложение использует огромное количество памяти и работает на 32-битной XP. Я думаю, может быть это исключение TypeLoadException или OutOfMemoryException, которое каким-то образом проглатывается (но я не понимаю, как, поскольку я пробовал это с исключениями первого шанса, включенными в отладчике).
Обновление 3
Столкнулся с той же проблемой только сейчас. Вот трассировка стека: Код до этого момента буквально просто:
Type tradeType = typeof(MyTradeType)
TradeFactory.CreateTrade(tradeType)
(раньше это было..CreateTrade(typeof(MyTradeType))
такЯ не мог сказать, еслиtypeof
вернулся ноль)
Итак, похожеtypeof()
не возвращает ноль но этополучить нулевой к тому времени, когда он заканчивается вCreateTrade
метод.
Исключение (NullReferenceException
) имеетHResult
собственностью0x80004003
(Invalid pointer
). ВызовSystem.Runtime.InteropServices.Marshal.GetLastWin32Error( )
(в немедленном окне) возвращает127 (The specified procedure could not be found)
, Я посмотрел в окне модулей и модуль, который содержит этот тип и метод был загружен, и нет никаких ошибок загрузчика.