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?
risposta
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".
- 1. Sono consentiti tutti i metodi non definiti non utilizzati?
- 2. Inserire i controlli dinamici nel mezzo della collezione di controlli
- 3. Solo i controlli del contenuto sono consentiti direttamente in una pagina di contenuto che contiene controlli del contenuto in ASP.NET
- 4. Perché i membri protetti sono consentiti nelle classi java finali?
- 5. Perché i tipi di parametri controvarianti in Java non sono consentiti per l'override?
- 6. I metodi LINQ sono metodi di estensione?
- 7. I metodi di estensione non sono consentiti nelle classi statiche nidificate?
- 8. Quali sono i caratteri legali/consentiti per i nomi dei file del server Web?
- 9. Perché i tipi flessibili non sono consentiti nelle definizioni dei tipi di record?
- 10. I metodi virtuali puri sono consentiti all'interno di una classe template?
- 11. dove mettere solo i metodi di supporto per i controller?
- 12. Perché i controlli secondari vengono inizializzati prima dei contenitori?
- 13. Perché il ridimensionamento dei controlli è diverso tra i PC?
- 14. Perché più istanze dell'oggetto Method sono per i metodi ereditati
- 15. Perché i metodi MonoBehaviour non sono implementati per l'override?
- 16. I controlli utente dinamici acquisiscono e mantengono i valori dopo i postback
- 17. Perché GNU Smalltalk utilizza parentesi per i corpi dei metodi?
- 18. Perché i metodi scala mancano i documenti?
- 19. Perché i gruppi di metodi sono consentiti sul lato sinistro dell'operatore 'is' e come possono essere utilizzati nella pratica?
- 20. Cosa sono i "controlli condizionali BuildConfig.DEBUG"?
- 21. Perché i metodi di supporto sono usati frequentemente in Javascript?
- 22. . Net TableLayoutPanel - I controlli di schiarimento sono molto lenti
- 23. Perché i metodi unittest2 sono camelCase se sono preferiti i nomi_con_recordori?
- 24. Quali sono i caratteri consentiti in una parola chiave Clojure?
- 25. Perché i pixel sono mobili?
- 26. I controlli VoiceOver sono selezionabili quando nascosti
- 27. I metodi astratti sono virtuali?
- 28. Come si ottengono i modelli dinamici IDEA scalaz che funzionano per i metodi simbolici?
- 29. Perché XAML (WPF) non esegue ricerche nelle definizioni di spazio dei nomi XML per i controlli?
- 30. Perché i modificatori sono consentiti per un pacchetto quando non sembrano fare nulla?
-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. –