C#中类型Type的GetMethod方法

866 阅读2分钟
原文链接: click.aliyun.com

C#中类型Type的GetMethod方法

fuyifang 2016-11-04 16:56:24 浏览6 评论0

c# static exception type threadpool 数组

摘要: C#中类型Type有个GetMethod方法,调用该方法可获取指定方法名的方法信息实例。 使用时,其参数一般为2个,一个是方法名称字符串(可设置条件忽略大小写),另外一个参数为搜索方法的条件枚举。

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执行实例:

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

            }
        }
如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件至:yqgroup@service.aliyun.com 进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容。

用云栖社区APP,舒服~

【云栖快讯】哪个编程语言最热门?各个专业领域的技术趋势是什么?如何才能更快速的踏上技术进阶之路……云栖社区2017中国开发者大调查火热进行!答卷可抽奖,红轴机械键盘、天猫精灵,丰富好礼大概率抽取  详情请点击 评论文章 (0) (0) (0)

相关文章

网友评论