2012-06-25 9 views
8

Nel mio programma, ho creare le espressioni lambda dinamici e poi compilare ai delegati. Questi delegati vengono quindi richiamati per estrarre informazioni dalle mie entità. Alcuni delegati possono lanciare eccezioni, ho preso l'eccezione dove chiamo il delegato. Ho abilitato "Abilita solo il mio codice" e applicato l'attributo [DebuggerNonUserCode] a dove è stato creato LambdaExpression, dove è stato compilato e dove chiamato. Ma poiché in Debug> Eccezioni> Common Language Runtime Exceptions, la casella di controllo Gettato è selezionata, lo studio visivo si arresta sempre sull'errore, che è un grave inconveniente per gli sviluppatori.Impedire debugger di interrompersi in un'eccezione in un LambdaExpression Compiled

Sembra che [DebuggerNonUserCode] dovrebbe in qualche modo essere applicato al delegato compilato, ma come? O qualche altro suggerimento?

Grazie.

+2

Non si interrompe in una prima eccezione di modifica? Possono essere disabilitati separatamente. – CodingBarfield

+0

No, si ferma sempre sull'errore, non solo la prima volta. – Alireza

+1

Sei sicuro che l'eccezione sia catturata da qualche parte. Se sono presenti eccezioni non applicate che causano il blocco dell'applicazione, Visual Studio mostra sempre il messaggio Eccezione. – CodingBarfield

risposta

1

Per quanto ne so, non è possibile applicare gli attributi per i metodi anonimi generati utilizzando espressioni, a parte forse qualche orribile nei guai con la generazione di tipo dinamico.

Tuttavia, un possibile suggerimento sarebbe quello di andare al menu delle eccezioni in Debug > Exceptions e scegliere le eccezioni che si desidera interrompere specificamente. Se le tue espressioni tendono a generare eccezioni di tipi specifici, puoi semplicemente disabilitare l'interruzione di tali eccezioni.

+1

Beh ... potrei essere disposto a prendere quei passi orribili. Qualche suggerimento alla risorsa giusta? Grazie – Alireza

Problemi correlati