C#中類型Type的GetMethod方法

C#中類型Type有個GetMethod方法,調用該方法可獲取指定方法名的方法信息實例。 
使用時,其參數通常爲2個,一個是方法名稱字符串(可設置條件忽略大小寫),另一個參數爲搜索方法的條件枚舉。html

我有幾張阿里雲幸運券分享給你,用券購買或者升級阿里雲相應產品會有特惠驚喜哦!把想要買的產品的幸運券都領走吧!快下手,立刻就要搶光了。 
該方法返回的是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執行實例:this

protected void btnExecute_Click(object sender, EventArgs e)
        {
            try
            {
                var Job_CleanLogDataType = _Job_HermesEDMSubscripton.GetType();
                string paramsText = this.txtParam.Text;
                ThreadPool.QueueUserWorkItem((_) =>
                {
                    var methodInfo = Job_CleanLogDataType.GetMethod("OnStart", BindingFlags.Instance | BindingFlags.NonPublic | BindingFlags.IgnoreCase);
                    methodInfo.Invoke(_Job_HermesEDMSubscripton, new object[] { paramsText });

                });
                this.lblMsg.Text = "執行OnStart完成";
            }
            catch (Exception ex)
            {
                this.lblMsg.Text = ex.ToString();

            }
        }

閱讀原文:http://click.aliyun.com/m/35038/ 阿里雲

相關文章
相關標籤/搜索