1. 程式人生 > >C#中型別Type的GetMethod方法

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();            }        }