2012-04-04 14 views
6

Sto eseguendo il porting del codice che utilizza estensivamente DynamicMethod s per consentire la precompilazione, per migliori prestazioni di avvio a freddo. Ho notato che DynamicMethod s può essere JITted ed eseguito con i controlli di visibilità saltati, che consente loro di accedere a tipi nidificati privati, ma gli assembly normali non possono (o non possono? Non vedo nessuna opzione di caricamento ovvio). Qual è la logica alla base di questa decisione di progettazione?Perché i salti dei controlli di visibilità sono consentiti solo per i metodi dinamici?

+1

-unity, poiché non è correlato a Microsoft Unity. Potresti leggere questo post sul blog, http://davedewinter.com/2010/11/21/tip-22-dynamicmethods-in-partial-trust/ Richiede determinate autorizzazioni per farlo. Pertanto, se si desidera limitare tali tentativi, è possibile. –

risposta

2

Ho bisogno di agitare le mani un po 'rispondendo a questa domanda, CAS è per sempre complicato. L'argomento skipVisibility è rilevante per le applicazioni host attendibili che generano codice che viene eseguito in una sandbox. In tal caso, non è opportuno eseguire controlli quando il metodo viene generato poiché l'ambiente di esecuzione è errato. Deve verificarsi quando il metodo esegue all'interno della sandbox. Dove è sottoposto ai normali controlli CAS eseguiti dalla sandbox.

Impostare l'argomento su true, infatti, aggiunge una richiesta di autorizzazione per ReflectionPermissionFlag.MemberAccess, necessaria per ottenere una ripresa per ottenere il metodo generato.

Topsy-turvy. Alcune informazioni di background sono disponibili nella sezione this MSDN article, "Aggiunta di RestrictedMemberAccess a Sandboxed Domains".

Problemi correlati