Occasionalmente, vedo che typeof(Foo)
restituisce null. Perché dovrebbe succedere?Perché typeof (Foo) restituisce mai null?
Questo è in C#, .NET 3.5.
Ho pensato che potrebbe avere qualcosa a che fare con l'assembly contenente il tipo non ancora caricato, ma un'applicazione di test mostra che l'assembly è caricato all'inizio del metodo in cui viene utilizzato typeof
.
Qualche idea?
Aggiornamento 1
- non posso fornire un campione riproducibile come questo avviene su un enorme applicazione
- Quando dico 'a volte' voglio dire con lo stesso metodo nella mia applicazione ma durante varie istanze. Inoltre, quando fallisce una volta durante l'esecuzione, fallirà ogni volta per quell'istanza dell'applicazione.
Update 2
L'applicazione in questione utilizza una quantità di memoria e di huuuuuge gira su 32bit XP. Sto pensando che forse è un TypeLoadException o OutOfMemoryException che è in qualche modo ingoiato (ma non riesco a vedere come, come ho provato con le eccezioni first-chance attivate nel debugger). Aggiornamento
incontrato lo stesso problema solo ora. Ecco l'analisi dello stack: Il codice fino a questo punto è letteralmente:
Type tradeType = typeof(MyTradeType)
TradeFactory.CreateTrade(tradeType)
(prima, era ..CreateTrade(typeof(MyTradeType))
così non ho potuto davvero dire se il typeof
restituito null)
Quindi, sembra che typeof()
non restituisca null ma è impostato su null quando termina nel metodo CreateTrade
.
L'eccezione (NullReferenceException
) ha una proprietà HResult
di 0x80004003
(Invalid pointer
). Una chiamata a System.Runtime.InteropServices.Marshal.GetLastWin32Error()
(nella Finestra Immediata) restituisce 127 (The specified procedure could not be found)
. Ho cercato nella finestra Modules e il modulo che contiene questo tipo e questo metodo è stato caricato e non sembra che ci siano errori di caricamento.
Interessante. Puoi fornire un esempio di codice che mostri il problema? – Amy
"Occasionalmente" significa sporadicamente sulla stessa chiamata o in determinati luoghi ma non in altri? – BoltClock
Io per primo non riesco ad immaginare in alcun modo che questo possa mai accadere. – leppie