Export (0) Print
Expand All
This topic has not yet been rated - Rate this topic

Reflection Emit Dynamic Assembly Scenarios

Reflection emit supports the creation of dynamic modules defined in dynamic assemblies. A dynamic module created in a dynamic assembly can be transient or persistable.

Assemblies can reference types defined in another assembly. A transient dynamic assembly can safely reference types defined in another transient dynamic assembly, a persistable dynamic assembly, or a static assembly. However, the common language runtime does not allow a persistable dynamic module to reference a type defined in a transient dynamic module. This is because when the persisted dynamic module is loaded after being saved to disk, the runtime cannot resolve the references to types defined in the transient dynamic module.

Some scenarios require a dynamic assembly to be created and executed in a remote application domain. Reflection emit does not allow a dynamic assembly to be emitted directly to a remote application domain. The solution is to emit the dynamic assembly in the current application domain, save the emitted dynamic assembly to disk, and then load the dynamic assembly into the remote application domain.

Dynamic assemblies can be created using one of the following access modes:

  • Run

    The dynamic assembly represented by an AssemblyBuilder is transient. The dynamic assembly can only be used to execute the emitted code.

  • Save

    The dynamic assembly represented by an AssemblyBuilder is persistable but cannot be executed until the saved portable executable (PE) file has been loaded from disk.

  • RunAndSave

    The dynamic assembly represented by an AssemblyBuilder is persistable but can also be executed before and/or after the assembly is saved to disk.

The access mode must be specified when the dynamic assembly is defined and cannot be changed later. The runtime uses the access mode of a dynamic assembly to optimize the assembly's internal representation.

Did you find this helpful?
(1500 characters remaining)
Thank you for your feedback
Show:
© 2014 Microsoft. All rights reserved.