1、MethodInfo类是在System.Reflection命名空间底下,既然是在Reflection空间底下。故名思议关于反射相关的操作,其中比较重要的方法是Invoke()方法,它
是加载相同程序集的方法。简单用法

string command = "AnnouncementSave";
//通过反射获取调用的具体方法
System.Reflection.MethodInfo method = this.GetType().GetMethod(command);
if (method != null)
{
//Execute Method
method.Invoke(this, new object[] { context });
}

调用方法:

public void AnnouncementSave(HttpContext context)
{

}

2.一段使用了很多反射技术的代码

public CommonValid(object m)
{
if (m != null)
{
PropertyInfo[] pis = m.GetType().GetProperties();
if (pis != null)
{
foreach (PropertyInfo pi in pis)
{
object[] attrs = System.Attribute.GetCustomAttributes(pi);
foreach (object attr in attrs)
{
if (attr.GetType().Namespace == "Soffice.DevelopFramework.Common.Valid")
{
Type t = typeof(Soffice.DevelopFramework.Common.Valid.Methods);
MethodInfo mi = t.GetMethod(attr.GetType().Name);
if (mi != null)
{
bool result = (bool)mi.Invoke(null, new object[] { attr, pi.GetValue(m, null) });
if (!result)
{
ValidResult validResult = new ValidResult(); MethodInfo MethodGetNum = attr.GetType().GetMethod("GetNum");
if (MethodGetNum != null)
{
validResult.Num = (int)MethodGetNum.Invoke(attr, null);
}
//ValidResult validResult = new ValidResult();
//validResult.Num = int.Parse(t.GetProperty("Num").GetValue(attr, null).ToString()); //listValid.Add(validResult);
}
}
}
}
}
}
}
}

反射之关于MethodInfo的使用的更多相关文章

  1. 利用反射调用方法时,处理ref,out参数需要注意的问题(转)

    转自:http://www.68idc.cn/help/buildlang/ask/20150318283817.html 项目中如下的泛型方法,因为要在运行时,动态指定类型参数,所以要利用反射来实现 ...

  2. 学习笔记: 反射应用、原理,完成扩展,emit动态代码

    using Ruanmou.DB.Interface; using Ruanmou.DB.MySql; using Ruanmou.DB.SqlServer; using Ruanmou.Model; ...

  3. [C#.NET 拾遗补漏]04:你必须知道的反射

    阅读本文大概需要 3 分钟. 通常,反射用于动态获取对象的类型.属性和方法等信息.今天带你玩转反射,来汇总一下反射的各种常见操作,捡漏看看有没有你不知道的. 获取类型的成员 Type 类的 GetMe ...

  4. 利用AOP写2PC框架(二)

    AOP的底层已经封装好了以后,我们就要开始针对应用层写具体的业务逻辑了. 也就是说我们需要有个类继承于AopProxyBase,并且重写其After,Bofore以达到我们的拦截记录的功能.代码如下: ...

  5. 【C#进阶系列】17 委托

    委托主要是为了实 现回调函数机制,可以理解为函数指针(唯一不同的在于多了委托链这个概念). 然而用的时候可以这么理解,但是委托的内部机制是比较复杂的. 一个委托的故事 delegate void ra ...

  6. 白话学习MVC(六)模型绑定

    一.什么是模型绑定? 模型绑定存在的意义就是为Action的参数提供值,例如:如下表单中提交了数据,那么Action(即:Index)的参数Id,Name的值就是表单中对应的name属性相同的值,而表 ...

  7. 再说重写IHttpHandler,实现前后端分离

    aspx页面第一次加载时,HttpHandler 里面是如何编译指定页面的呢?Framework提供了编译页面的API如下: BuildManager.CreateInstanceFromVirtua ...

  8. 重写IHttpHandler,实现前后端分离

    再说重写IHttpHandler,实现前后端分离   aspx页面第一次加载时,HttpHandler 里面是如何编译指定页面的呢?Framework提供了编译页面的API如下: BuildManag ...

  9. [Abp 源码分析]十六、后台作业与后台工作者

    0. 简介 在某些时候我们可能会需要执行后台任务,或者是执行一些周期性的任务.比如说可能每隔 1 个小时要清除某个临时文件夹内的数据,可能用户会要针对某一个用户群来群发一组短信.前面这些就是典型的应用 ...

随机推荐

  1. 关于org.apache.lucene.queryParser.ParseException: Encountered "" 解决方法

    现象: org.apache.lucene.queryParser.ParseException: Encountered "<EOF>" at line 1, col ...

  2. Sql Server 2008 R2安装教程

    作者:骄阳似火_2018 来源:CSDN 原文:https://blog.csdn.net/weixin_42773514/article/details/87008537 版权声明:本文为博主原创文 ...

  3. js控制网页窗口一打开就自动全屏

    1.如果不需要开新窗口 在body区加入: <body   onLoad= "javascript:window.resizeTo(screen.availWidth,screen.a ...

  4. 站在BERT肩膀上的NLP新秀们(PART I)

    站在BERT肩膀上的NLP新秀们(PART I)

  5. VLC搭建RTSP服务器

    实时流协议 RTSP 是在实时传输协议的基础上工作的,主要实现对多媒体播放的控制.用户对多媒体信息的播放.暂停.前进和后退等功能就是通过对实时数据流的控制来实现的. 而这些播放控制功能的实现不仅需要多 ...

  6. dubbo中的Filter链原理及应用

    转载:https://www.jianshu.com/p/f390bb88574d filter在dubbo中的应用非常广泛,它可以对服务端.消费端的调用过程进行拦截,从而对dubbo进行功能上的扩展 ...

  7. SpatiaLite, load spatial extension first

  8. hinkphp项目部署到Linux服务器上报错“模板不存在”如何解决

    检查了服务器上的文件,并没有缺少文件,再次上传文件到服务器,还是报错.莫名其妙,怀疑是代码问题. 仔细检查后,发现是模板的文件名问题: 用过TP的都知道:thinkphp会在$this->dis ...

  9. 工具系列 | Docker基本概念

    1.什么是docker? Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的镜像中,然后发布到任何流行的 Linux或Windows 机器上,也可以实现虚拟化. ...

  10. 常见 SQL 语句的加锁分析

    参考: https://www.aneasystone.com/archives/2017/12/solving-dead-locks-three.html