Por que typeof (Foo) retornaria nulo?

Ocasionalmente, vejo quetypeof(Foo) retorna nulo. Por que isso aconteceria?

Isso está em C #, .NET 3.5.

Eu pensei que poderia ter algo a ver com o assembly que contém o tipo ainda não está sendo carregado, mas um aplicativo de teste mostra que o assembly é carregado no início do método em quetypeof é usado.

Alguma ideia?

Atualização 1

Não posso fornecer uma amostra reproduzível, pois isso acontece em um aplicativo enormeQuando digo 'ocasionalmente', quero dizer o mesmo método no meu aplicativo, mas durante várias instâncias. Além disso, quando falha uma vez ao executar, sempre falha para essa instância do aplicativo.

Atualização 2

O aplicativo em questão utiliza uma quantidade enorme de memória e é executado no XP de 32 bits. Estou pensando que talvez seja uma TypeLoadException ou OutOfMemoryException que de alguma forma esteja sendo engolida (mas não vejo como, pois tentei isso com as exceções de primeira chance ativadas no depurador).

Atualização 3

Corri para o mesmo problema agora. Aqui está o rastreamento de pilha: O código até este ponto é literalmente apenas:

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

(antes, era..CreateTrade(typeof(MyTradeType)) tãoNa verdade, eu não sabia dizer se otypeof retornado nulo)

Então, parecetypeof() não está retornando nulo mas ésendo definido como nulo quando terminar noCreateTrade método.

A exceção (NullReferenceException) tem umHResult propriedade de0x80004003 (Invalid pointer) Uma chamada paraSystem.Runtime.InteropServices.Marshal.GetLastWin32Error( ) (na janela Imediata) retorna127 (The specified procedure could not be found). Eu olhei na janela Módulos e o módulo que contém esse tipo e método foi carregado e não parece haver nenhum erro no carregador.

questionAnswers(5)

yourAnswerToTheQuestion