The System.Reflection.Assembly class is one of the most important classes for implementing reflection-based techniques in your applications, because it exposes several methods for loading assemblies, which let you load a new assembly at runtime. After loading an assembly, you can use an instance of the Assembly object to query the assembly manifest data, determine available types for reference, and view metadata included with that block of application code.
method supports dynamic invocation. You can use it to create a type reference based on the assembly. Because assemblies can contain numerous types, the Assembly class needs to support a method that returns a System.Type object for a specified class. It does that through the GetType
method as shown the following code excerpt:
// C# code
Assembly asm = Assembly.LoadFrom(strFileName);
oClass = asm.CreateInstance(strClass);
tType = asm.GetType(strClass);
The preceding code fragment shows how to use an Assembly object to load an assembly using the overloaded LoadFrom
method, create an instance of a type reference using the assembly, and then create a System.Type object that represents the type reference by using the GetType
method. Finally, you can use the Type object to invoke class members dynamically, using the overloaded InvokeMember method.
// C# code
object oArguments = new object;
object oReturn = tType.InvokeMember("YourMethod",
null, oClass, oArguments);
The preceding fragment demonstrates invoking the YourMethod
member of the assembly using the Type instance obtained from the previous example. Note that the array oArguments
must contain any input parameters required by the method; in this example oArguments
is an array with 0 elements. By using the Assembly object and the Type object as shown in the examples you can load an assembly at runtime, create a reference to one of the assembly types, and then dynamically invoke one of the type methods.