Skip to Content
Nuova versione 12 disponibile 🎉

Copertura

Il proxy dinamico sostituisce le istruzioni dirette call, callvirt e newobj e copre le chiamate statiche, di istanza, virtuali e di interfaccia, i metodi di accesso di proprietà ed eventi, la costruzione di oggetti, le chiamate sui tipi generici (per esempio List<int>.Add) e le chiamate a metodi generici, compresi gli operatori LINQ come Where, Select e OrderBy.

Perché il programma offuscato si comporti esattamente come l’originale, alcune chiamate deliberatamente non passano dal proxy e restano chiamate dirette:

  • Metodi sensibili al chiamante, il cui risultato dipende dal metodo o dall’assembly chiamante: Assembly.GetExecutingAssembly, Assembly.GetCallingAssembly e MethodBase.GetCurrentMethod. Farli passare da un proxy cambierebbe il chiamante osservato e restituirebbe un risultato errato.
  • Valori restituiti per riferimento (ref), che un delegate non può restituire.
  • Costruttori di tipi valore e costruttori di delegate.
  • Metodi generici su tipi generici, e chiamate generiche i cui argomenti di tipo sono tipi aperti, tipi per riferimento o tipi puntatore.

Queste chiamate vengono eseguite senza modifiche; ogni altra chiamata idonea passa dal proxy.

Last updated on