反射之关于MethodInfo的使用
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的使用的更多相关文章
- 利用反射调用方法时,处理ref,out参数需要注意的问题(转)
		
转自:http://www.68idc.cn/help/buildlang/ask/20150318283817.html 项目中如下的泛型方法,因为要在运行时,动态指定类型参数,所以要利用反射来实现 ...
 - 学习笔记:  反射应用、原理,完成扩展,emit动态代码
		
using Ruanmou.DB.Interface; using Ruanmou.DB.MySql; using Ruanmou.DB.SqlServer; using Ruanmou.Model; ...
 - [C#.NET 拾遗补漏]04:你必须知道的反射
		
阅读本文大概需要 3 分钟. 通常,反射用于动态获取对象的类型.属性和方法等信息.今天带你玩转反射,来汇总一下反射的各种常见操作,捡漏看看有没有你不知道的. 获取类型的成员 Type 类的 GetMe ...
 - 利用AOP写2PC框架(二)
		
AOP的底层已经封装好了以后,我们就要开始针对应用层写具体的业务逻辑了. 也就是说我们需要有个类继承于AopProxyBase,并且重写其After,Bofore以达到我们的拦截记录的功能.代码如下: ...
 - 【C#进阶系列】17 委托
		
委托主要是为了实 现回调函数机制,可以理解为函数指针(唯一不同的在于多了委托链这个概念). 然而用的时候可以这么理解,但是委托的内部机制是比较复杂的. 一个委托的故事 delegate void ra ...
 - 白话学习MVC(六)模型绑定
		
一.什么是模型绑定? 模型绑定存在的意义就是为Action的参数提供值,例如:如下表单中提交了数据,那么Action(即:Index)的参数Id,Name的值就是表单中对应的name属性相同的值,而表 ...
 - 再说重写IHttpHandler,实现前后端分离
		
aspx页面第一次加载时,HttpHandler 里面是如何编译指定页面的呢?Framework提供了编译页面的API如下: BuildManager.CreateInstanceFromVirtua ...
 - 重写IHttpHandler,实现前后端分离
		
再说重写IHttpHandler,实现前后端分离 aspx页面第一次加载时,HttpHandler 里面是如何编译指定页面的呢?Framework提供了编译页面的API如下: BuildManag ...
 - [Abp 源码分析]十六、后台作业与后台工作者
		
0. 简介 在某些时候我们可能会需要执行后台任务,或者是执行一些周期性的任务.比如说可能每隔 1 个小时要清除某个临时文件夹内的数据,可能用户会要针对某一个用户群来群发一组短信.前面这些就是典型的应用 ...
 
随机推荐
- 一种Winform类electron的实现
			
最近看了一篇文章 Winform客户端内嵌Vue页面 使用html作为winform的界面(其实这种做法早在MFC时代就已经有了),不过感觉文章中的封装并不够彻底,所以我忍不住要发一篇博客来说说我 ...
 - poi导入读取时间格式问题
			
万能处理方案: 所有日期格式都可以通过getDataFormat()值来判断 yyyy-MM-dd-----14 yyyy年m月d日--- 31 yyyy年m月-------57 m月d日 ---- ...
 - java8在Stream的forEach操作时获取index
			
import java.util.Objects; import java.util.function.BiConsumer; /** * * @author yangzhilong * @dat ...
 - 使用NPOI或EPPlus来导出Excel文件实例,可在Excel文件加密
			
使用NPOI.dll组件来导出Excel文件,并设置样式,Nuget引用即可. packages\NPOI.2.1.3.1\lib\net20\NPOI.dll #region Excel prote ...
 - docker run启动的容器挂掉了,数据怎么办
			
情景描述 在某个系统中,功能性的服务使用 docker stack deploy xxx 启动,某个国产数据库的服务单独使用 docker run xxx 启动,数据库服务没有将存储的位置挂载出来: ...
 - (转载)Pytorch中的仿射变换(affine_grid)
			
转载于:Pytorch中的仿射变换(affine_grid) 参考:详细解读Spatial Transformer Networks (STN) 假设我们有这么一张图片: 下面我们将通过分别通过手 ...
 - python   os.popen('xxx.py') 遇到的坑 (No Child Processes)
			
1.调用系统库 platform.system() 报错: 2.os.popen() 打开的文件流未关闭也会出现这种错误. f = os.popen() f.read() f.close() 问题复现 ...
 - linux 下core文件生成、路径、格式设置及调试
			
core文件生成及调试1 代码 #include<stdio.h> int main() { int *p = NULL; *p = 0; return 0; } 2 在当前shell执行 ...
 - Swift编码总结9
			
1.Swift限制textField输入位数为10位: func textField(_ textField: UITextField, shouldChangeCharactersIn range: ...
 - 查看表空间使用情况(SQL)
			
1: --查询表空间使用情况 2: SELECT Upper(F.TABLESPACE_NAME) "表空间名", 3: D.TOT_GROOTTE_ ...