Assembly的CreateInstance有三個重載第一個參數需要是一個字符串表示的完整的類名第二個參數是一個bool類型如果為true表示對第一個參數不區分大小寫
第三個 影響執行搜索的方式的位屏蔽此值是 SystemReflectionBindingFlags 中的位標志的組合
// binder: 一個啟用綁定參數類型強制成員調用以及通過反射進行 MemberInfo 對象檢索的對象
如果 binder 為 null則使用默認聯編程序
// args: Object 類型的數組包含要傳遞給構造函數的參數此參數數組在數量順序和類型方面必須
與要調用的構造函數的參數匹配如果需要默認的構造函數則 args 必須是空數組或 null
// culture: 用於控制類型強制的 CultureInfo 的實例如果這是 null則使用當前線程的 CultureInfo(例如這對於將表示 的 String 轉換為
Double 值是必需的因為不同的區域性以不同的方式表示
// activationAttributes: 包含一個或多個可以參與激活的屬性的數組通常為包含單個 SystemRuntimeRemotingActivationUrlAttribute 對象的數組
SystemRuntimeRemotingActivationUrlAttribute 指定激活遠程對象所需的 URL有關客戶端激活的對象的詳細說明請參見客戶端激活
Activator類的靜態方法CreateInstance
CreateInstance的第一個參數說明是程序集的名稱為null時表示當前程序集第二個參數說明要創建的類型名稱ActivatorCreateInstance返回的是一個ObjectHandle對象必須進行一次Unwrap()才能返回Object類型進而可以強制轉換成我們需要的類型(本例中是MathClass)ObjectHandle包含在SystemRuntimeRemoting命名空間中可見它是Remoting相關的實際上ObjectHandle類只是一個對原類型進行了一個包裝以便進行封送
無參構造
有參構造
動態調用
使用InvokeMember調用方法
InvokeMember(方法名 BindingFlagsInvokeMethod null對象實例方法參數);
靜態InvokeMember(方法名 BindingFlagsInvokeMethod null類型Type方法參數);
MethodInfoInvoke調用方法
MethodInfo mi = tGetMethod(方法名 BindingFlagsInstance | BindingFlagsPublic);
miInvoke(對象實例 null);
靜態
MethodInfo mi = tGetMethod(方法名 BindingFlagsStatic | BindingFlagsPublic);
MiInvoke(null 方法參數 );
用反射可以達到最大程度上的多態
From:http://tw.wingwit.com/Article/program/net/201311/11935.html