.Net——动态调用方法

简介: 一,使用InvokeMember思路:在类型的type的对象上调用InvokeMember方法,传递要在其上调用方法的对象,并指定BindingFlags为InvokeMethod.根据方法签名,可能还需要传递参数。

一,使用InvokeMember

思路:在类型的type的对象上调用InvokeMember方法,传递要在其上调用方法的对象,并指定BindingFlags为InvokeMethod.根据方法签名,可能还需要传递参数。


示例(对普通方法和对静态方法的调用):

         #region 动态调用方法——使用InvokeMember对一般方法的调用

                //Type t = typeof(Calculator);
                //Calculator c = new Calculator(1, 2);
                //int result = (int)t.InvokeMember("Add", BindingFlags.InvokeMethod, null, c, null);
                //Console.WriteLine(result);

            #endregion

#region 动态调用方法——使用InvokeMember对静态含参数方法的调用

                //object[] paramas = { 6, 9 };
                //Type t = typeof(Calculator);
                //t.InvokeMember("Add", BindingFlags.InvokeMethod, null, t, paramas);//静态方法不是基于某个具体的类型实例,而是类型本身。方法参数还是以object数组传入的


            #endregion


二,使用MethodInfo.Invoke

使用思路:先通过type对象的getMethod方法,获取想要调用的方法对象,也就是Methodinfo对象,然后在该对象上调用Invoke方法。根据方法签名,可能还需要传递参数。


#region 动态调用方法——使用MethodInfo.Invoke调用方法

                Type t = typeof(Calculator);
                Calculator c = new Calculator(3, 4);
                MethodInfo mi = t.GetMethod("Add", BindingFlags.Instance | BindingFlags.Public);
                mi.Invoke(c, null);


 #endregion

其实有时候根据方法名称调用方法还是挺方便的,就是反射的带来的性能问题没有衡量过,都说性能不好,但是到底有多大影响,求解释?

目录
相关文章
|
6月前
|
API 网络安全 数据安全/隐私保护
.NET邮箱API发送邮件的方法有哪些
本文介绍了.NET开发中使用邮箱API发送邮件的方法,包括SmtpClient类发送邮件、MailMessage类创建邮件消息、设置SmtpClient属性、同步/异步发送、错误处理、发送HTML格式邮件、带附件邮件以及多人邮件。AokSend提供高触达发信服务,适用于大规模验证码发送场景。了解这些技巧有助于开发者实现高效、可靠的邮件功能。
|
6月前
|
开发框架 .NET
ASP.NET Core NET7 增加session的方法
ASP.NET Core NET7 增加session的方法
88 0
|
IDE API 开发工具
拦截|篡改|伪造.NET类库中不限于public的类和方法
本文除了回顾拦截.NET类库中的方法,实现方法参数的篡改、方法返回结果的伪造,再着重介绍.NET类库中非public类及方法如何拦截。
拦截|篡改|伪造.NET类库中不限于public的类和方法
|
3月前
|
SQL 缓存 开发框架
分享一个 .NET EF6 应用二级缓存提高性能的方法
分享一个 .NET EF6 应用二级缓存提高性能的方法
|
3月前
|
程序员 数据库
分享 2 个 .NET EF 6 只更新某些字段的方法
分享 2 个 .NET EF 6 只更新某些字段的方法
|
3月前
|
数据库
分享一个 .NET EF 6 扩展 Where 的方法
分享一个 .NET EF 6 扩展 Where 的方法
|
3月前
|
开发框架 前端开发 算法
分享 .NET EF6 查询并返回树形结构数据的 2 个思路和具体实现方法
分享 .NET EF6 查询并返回树形结构数据的 2 个思路和具体实现方法
|
3月前
|
开发框架 中间件 .NET
分享 ASP.NET Core Web Api 中间件获取 Request Body 两个方法
分享 ASP.NET Core Web Api 中间件获取 Request Body 两个方法
107 0
|
3月前
|
开发框架 .NET API
如何在 ASP.NET Core Web API 方法执行前后 “偷偷“ 作一些 “坏“ 事?初识 ActionFilterAttribute
如何在 ASP.NET Core Web API 方法执行前后 “偷偷“ 作一些 “坏“ 事?初识 ActionFilterAttribute
|
3月前
|
开发框架 前端开发 .NET
Asp.net Webapi 的 Post 方法不能把参数加到 URL 中?试试这样写
Asp.net Webapi 的 Post 方法不能把参数加到 URL 中?试试这样写
下一篇
无影云桌面