¿Por qué typeof (Foo) alguna vez volvería nulo?

De vez en cuando, veo quetypeof(Foo) devuelve nulo ¿Por qué sucedería esto?

Esto está en C #, .NET 3.5.

Pensé que podría tener algo que ver con el conjunto que contiene el tipo que aún no se está cargando, pero una aplicación de prueba muestra que el conjunto se carga al comienzo del método dondetypeof es usado

¿Algunas ideas?

Actualización 1

No puedo proporcionar una muestra reproducible ya que esto sucede en una aplicación enormeCuando digo "ocasionalmente" me refiero al mismo método en mi aplicación, pero durante varios casos. Además, cuando falla una vez cuando se ejecuta, fallará cada vez para esa instancia de la aplicación.

Actualización 2

La aplicación en cuestión utiliza una gran cantidad de memoria y se ejecuta en XP de 32 bits. Estoy pensando que tal vez sea una TypeLoadException o OutOfMemoryException que de alguna manera se está tragando (pero no puedo ver cómo, ya que he intentado esto con las excepciones de primera oportunidad activadas en el depurador).

Actualización 3

Me encontré con el mismo problema en este momento. Aquí está el seguimiento de la pila: El código hasta este punto es literalmente solo:

Type tradeType = typeof(MyTradeType)
TradeFactory.CreateTrade(tradeType)

(antes, era..CreateTrade(typeof(MyTradeType)) entoncesEn realidad no podría decir si eltypeof devuelto nulo)

Entonces, parece quetypeof() no regresa nulo pero esponiéndose nulo para cuando termina en elCreateTrade método.

La excepción (NullReferenceException) tiene unHResult propiedad de0x80004003 (Invalid pointer) Una llamada aSystem.Runtime.InteropServices.Marshal.GetLastWin32Error( ) (en la ventana Inmediato) vuelve127 (The specified procedure could not be found). He buscado en la ventana Módulos y el módulo que contiene este tipo y método se ha cargado y no parece haber ningún error en el cargador.

Respuestas a la pregunta(5)

Su respuesta a la pregunta