Dynamic Type Resolution Technology Sample
This sample demonstrates how hosts can participate in the type resolution process by supplying an event handler that returns an assembly containing the requested type. This is an advanced technique, most likely to be used in distributed applications to facilitate flexibility and fault-tolerance.
For information about using the samples, see the following topics:
To build the sample using the command prompt
Open a Command Prompt window and navigate to one of the language-specific subdirectories for the sample.
Type msbuild DynamicTypeResolveCS.sln or msbuild DynamicTypeResolveVB.sln, depending on your choice of programming language, at the command line.
To build the sample using Visual Studio
Open Windows Explorer and navigate to one of the language-specific subdirectories for the sample.
Double-click the icon for DynamicTypeResolveCS.sln or DynamicTypeResolveVB.sln, depending on your choice of programming language, to open the file in Visual Studio.
On the Build menu, click Build Solution.
To run the sample
Open the Command Prompt window and navigate to the directory that contains the built executable file.
Type DynamicTypeResolve.exe at the command line.
Note
The sample builds a console application. You must launch and run it in a Command Prompt window to view its output.
Remarks
The sample attempts to instantiate a non-existent type. However, the sample also handles type-load failures, and dynamically creates the necessary type, avoiding a FileNotFoundException.
The sample uses the following technologies and classes.
Reflection
AppDomain The AssemblyResolve event of this class is used to add an event-handler that is called when a type load fails.
Activator Used to create instances of a type whose name is not necessarily known at compile time.
MethodInfo Used to invoke a method on a type, where the method name is not necessarily known at compile time.
AssemblyBuilder Used to emit a dynamic assembly at run time.
AssemblyName Used to define the unique identity of an assembly. The sample makes the simplest use of this type, to give the dynamic assembly a text name.
ModuleBuilder Used to build a dynamic module in the dynamic assembly.
TypeBuilder This type, derived from Type, is used to build a type dynamically. From it you can request instances of the FieldBuilder, ConstructorBuilder, and MethodBuilder types. Using these types, the sample generates a complete type.
MethodBuilder Used to define a method in a dynamic type.
ILGenerator The MethodBuilder type implements the GetILGenerator method, which returns an instance of the ILGenerator type. This type is used to generate Microsoft Intermediate Language (MSIL) code dynamically.
Delegates and Events
- ResolveEventHandler Used to indicate a callback method to be called when a type-resolution fails.
See Also
Reference
Other Resources
Emitting Dynamic Methods and Assemblies