Scenari di base della reflection emit

La reflection emit supporta un unico scenario: un modulo dinamico definito in un assembly dinamico. I moduli dinamici creati in un assembly dinamico possono essere temporanei o persistenti.

Restrizioni ai riferimenti ai tipi

Gli assembly possono fare riferimento a tipi definiti in altri assembly. Per gli assembly dinamici temporanei è consentito il riferimento a tipi definiti in un altro assembly dinamico temporaneo, in un assembly dinamico persistente o in un assembly statico. In Common Language Runtime, tuttavia, i moduli dinamici persistenti non possono fare riferimento a tipi definiti in moduli dinamici temporanei, in quanto, quando il modulo dinamico persistente viene caricato dopo essere stato salvato su disco, il runtime non è in grado di risolvere i riferimenti ai tipi definiti nel modulo dinamico temporaneo.

Restrizioni alla creazione su domini applicazione remoti

In alcuni scenari è necessario creare ed eseguire un assembly dinamico in un dominio applicazione remoto. La reflection emit non consente la creazione diretta di un assembly dinamico su un dominio applicazione remoto. La soluzione consiste nel creare l'assembly dinamico nel dominio applicazione corrente, salvare su disco l'assembly dinamico creato, quindi caricare l'assembly dinamico nel dominio applicazione remoto.

Modalità di accesso agli assembly dinamici

È possibile creare assembly dinamici con una delle seguenti modalità di accesso:

  • Run

    L'assembly dinamico rappresentato da un AssemblyBuilder è temporaneo. Tale assembly dinamico è utilizzabile solo per eseguire il codice creato.

  • Save

    L'assembly dinamico rappresentato da un AssemblyBuilder è persistente ma eseguibile solo dopo il caricamento da disco del file eseguibile portabile (PE, Portable Executable) salvato.

  • RunAndSave

    L'assembly dinamico rappresentato da un AssemblyBuilder è persistente ma eseguibile sia prima che dopo il salvataggio su disco.

È necessario specificare la modalità di accesso alla definizione dell'assembly dinamico e tale modalità non è modificabile in seguito. Il runtime utilizza la modalità di accesso degli assembly dinamici per ottimizzare la rappresentazione interna degli assembly stessi.

Vedere anche

Scenari della reflection emit