C#中型別Type的GetMethod方法
C#中型別Type有個GetMethod方法,呼叫該方法可獲取指定方法名的方法資訊例項。
使用時,其引數一般為2個,一個是方法名稱字串(可設定條件忽略大小寫),另外一個引數為搜尋方法的條件列舉。
該方法返回的是MethodInfo型別的例項,獲取到了這個例項之後,我們就可以呼叫並執行該方法了。
MethodInfo method = type.GetMethod( funcName , BindingFlags.IgnoreCase | BindingFlags.Static | BindingFlags.Public );
這裡要注意,搜尋條件列舉,即第2個引數,要包含BindingFlags.Public,否則會返回NULL的。
如果是靜態的方法,還要設定一個條件BindingFlags.Static。
得到了MethodInfo例項後,反射執行該方法:
method.Invoke( obj, arrParam );
obj為呼叫方法所屬的型別例項,如果呼叫的為靜態方法,可設定為null;arrParam為方法引數陣列。
通過method.Invoke執行例項:
protectedvoidbtnExecute_Click(objectsender, EventArgs e){try{varJob_CleanLogDataType = _Job_HermesEDMSubscripton.GetType();stringparamsText =this.txtParam.Text; ThreadPool.QueueUserWorkItem((_) => {varmethodInfo = Job_CleanLogDataType.GetMethod("OnStart", BindingFlags.Instance | BindingFlags.NonPublic | BindingFlags.IgnoreCase); methodInfo.Invoke(_Job_HermesEDMSubscripton,newobject[] { paramsText }); });this.lblMsg.Text ="執行OnStart完成"; }catch(Exception ex) {this.lblMsg.Text = ex.ToString(); } }