下面是两个反射的实例

案例1:

动态调用类中的方法、传入参数,并获得返回值。

xxxx:类名

Event:类中的方法

pra1,pra2,pra3:方法对应的入参

DoRet:方法返回的执行结果

Type t = typeof(xxxx);//类名
MethodInfo mt = t.GetMethod(Event);//加载方法
string DoRet = mt.Invoke(this, new object[] { pra1, pra2, pra3 }).ToString();//执行

案例2:

动态加载外部DLL,并执行其中的方法。

xxx:外部Dll的名字

zzz:Dll中的类名

yyy:方法名

pra1,pra2:入参

Ret:调用yyy的返回结果

Assembly ass = null;
Type tp;
Object obj;
ass = Assembly.Load("xxx");//dll名字
tp = ass.GetType("xxx.zzz");//类名
obj = Activator.CreateInstance(tp);//实例化
MethodInfo meth = tp.GetMethod("yyy");//加载方法
int Ret= meth.Invoke(obj, new Object[] { pra1, pra2 }).ToString();//执行

案例3:

动态执行方法和匹配参数

1.从http请求中解析出方法method和输入参数paras

2.从类中获取method的入参列表lists

3.匹配lists和paras,如果paras少于lists,则用空值代替

4.调用对应的方法

C#反射调用方法实例的更多相关文章

  1. .NET/C# 反射的的性能数据,以及高性能开发建议(反射获取 Attribute 和反射调用方法)——转载

    原文链接:https://blog.walterlv.com/post/dotnet-high-performance-reflection-suggestions.html ***** 大家都说反射 ...

  2. 原 .NET/C# 反射的的性能数据,以及高性能开发建议(反射获取 Attribute 和反射调用方法)

    大家都说反射耗性能,但是到底有多耗性能,哪些反射方法更耗性能:这些问题却没有统一的描述. 本文将用数据说明反射各个方法和替代方法的性能差异,并提供一些反射代码的编写建议.为了解决反射的性能问题,你可以 ...

  3. Java反射学习-4 - 反射调用方法

    反射调用方法: package cn.tx.reflect; import java.lang.reflect.Constructor; import java.lang.reflect.Method ...

  4. JAVA反射调用方法

    1.用户类 package com.lf.entity; import com.lf.annotation.SetProperty; import com.lf.annotation.SetTable ...

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

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

  6. 通过Java反射调用方法

    这是个测试用的例子,通过反射调用对象的方法.     TestRef.java import java.lang.reflect.Method; import java.lang.reflect.In ...

  7. spring aop 动态代理批量调用方法实例

    今天项目经理发下任务,需要测试 20 个接口,看看推送和接收数据是否正常.因为对接传输的数据是 xml 格式的字符串,所以我拿现成的数据,先生成推送过去的数据并存储到文本,以便验证数据是否正确,这时候 ...

  8. java 使用反射调用方法

    每个Method的对象对应一个具体的底层方法.获得Method对象后,程序可以使用Method里面的invoke方法来执行该底层方法. Object invoke(Object obj,Object ...

  9. Java 反射调用方法 - 不跳过安全检查、跳过安全检查和普通方法性能比较测试

    java中反射提供灵活性同时,给运行效率带来了一定影响.写个代码测试一下 package com.xzlf.reflectTest; import java.lang.reflect.Method; ...

随机推荐

  1. win 上安装cad2002的心得

    前不久,一从事测绘的哥们来找我,要我给她装一专业软件,想想应该很简单,不知为何把他难成这样,他极力要求安装xp系统,说是只有xp上才能装成功,我不信这个邪,查了许多资料发现win 7根本不兼容cad2 ...

  2. https://blog.csdn.net/u011489043/article/details/68488459

    转自https://blog.csdn.net/u011489043/article/details/68488459 String 字符串常量   StringBuffer 字符串变量(线程安全) ...

  3. config.go 源码阅读

    package main import (     "io/ioutil"     "launchpad.net/goyaml" ) // ProxyConfi ...

  4. http.go

    )         }         if name != cfgName {             continue         }         return val.FieldByNa ...

  5. bzoj 4008 亚瑟王 期望概率dp

    对于这种看起来就比较傻逼麻烦的题,最关键的就是想怎么巧妙的设置状态数组,使转移尽可能的简洁. 一开始我想的是f[i][j]表示到第j轮第i张牌还没有被选的概率,后来发现转移起来特别坑爹,还会有重的或漏 ...

  6. BZOJ_2151_种树_贪心+堆+链表

    BZOJ_2151_种树_贪心+堆 Description A城市有一个巨大的圆形广场,为了绿化环境和净化空气,市政府决定沿圆形广场外圈种一圈树.园林部门得到指令后,初步规划出n个种树的位置,顺时针编 ...

  7. Python数据结构应用5——排序(Sorting)

    在具体算法之前,首先来看一下排序算法衡量的标准: 比较:比较两个数的大小的次数所花费的时间. 交换:当发现某个数不在适当的位置时,将其交换到合适位置花费的时间. 冒泡排序(Bubble Sort) 这 ...

  8. 使用Scala IDE for Eclipse遇到build errors错误的解决办法

    在编写第一个Scala语言的Spark程序时,在Scala IDE for Eclipse中运行程序时出现“Project XXXX contains build errors, Continue l ...

  9. 强化学习(十九) AlphaGo Zero强化学习原理

    在强化学习(十八) 基于模拟的搜索与蒙特卡罗树搜索(MCTS)中,我们讨论了MCTS的原理和在棋类中的基本应用.这里我们在前一节MCTS的基础上,讨论下DeepMind的AlphaGo Zero强化学 ...

  10. 【原创】详细案例解剖——浅谈Redis缓存的常用5种方式(String,Hash,List,set,SetSorted )

    很多小伙伴没接触过Redis,以至于去学习的时候感觉云里雾里的,就有一种:教程随你出,懂了算我输的感觉. 每次听圈内人在谈论的时候总是插不上话,小编就偷偷去了解了一下,也算是初入门径. 然后就整理了一 ...