Assembly 類別代表組件,透過反射可取得其元數據。首先需將組件載入記憶體,使用 Assembly.Load 等靜態方法。
public static void Main()
{
Assembly assem = Assembly.GetExecutingAssembly();
Console.WriteLine("組件全名:" + assem.FullName);
Console.WriteLine("組件版本:" + assem.GetName().Version);
Console.WriteLine("組件初始位置:" + assem.CodeBase);
Console.WriteLine("組件位置:" + assem.Location);
Console.WriteLine("組件進入點:" + assem.EntryPoint);
Type[] types = assem.GetTypes();
Console.WriteLine("組件包含的型別:");
foreach (var item in types) Console.WriteLine("類別:" + item.Name);
}
早期繫結在編譯時期確定型別,晚期繫結在執行期透過反射動態載入。範例:
Assembly assem = Assembly.GetExecutingAssembly();
// 從組件建立實例,呼叫帶參數建構函式
Object o = assem.CreateInstance("ConsoleApplication2.Example", false,
BindingFlags.ExactBinding, null, new Object[] { 2 }, null, null);
// 取得方法資訊並呼叫
MethodInfo m = assem.GetType("ConsoleApplication2.Example").GetMethod("SampleMethod");
Object ret = m.Invoke(o, new Object[] { 42 });
Console.WriteLine("SampleMethod returned {0}.", ret);
此技術常用於外掛架構、動態載入擴充元件等場景。