C# 通过方法的字符串名动态调用方法 反射实现
通过字符串执行方法,在可能会调用不同方法时对不同方法进行调用
以下为实例:
public class ABC
{
string str = "通过反射执行的方法";
//Class:要反射的Method所在类名
Type type = typeof(Class);
//funcName:进行反射的方法名称,第二个参数指定方法的搜索范围,当前为搜索private的方法,没有第二个参数则为public的方法
MethodInfo mt = type.GetMethod("funcName",BindingFlags.NonPublic | BindingFlags.Instance);
object instance = Activator.CreateInstance(t);
//执行到反射成功的方法上
mt.Invoke(instance,new object[]{ paramster }); //被反射执行到的方法
void funcName(object paramster)
{
//如果想要使用ABC类中的变量则需要在调用Invoke()时第一个参数置为ABC的实例而非instance
//实例:this
string a = str;
}
} public class CBA
{
string str = "通过反射执行的方法";
//被反射执行到的方法
public void funcName(object paramster)
{
//如果想要使用ABC类中的变量则需要在调用Invoke()时第一个参数置为ABC的实例而非instance
//实例:new CBA()
string a = str;
}
}
文档:Type.note
结合线程使用: 链接:http://note.youdao.com/noteshare?id=baaca71b2653e8eb6a69b4ac67af9bce
C# 通过方法的字符串名动态调用方法 反射实现的更多相关文章
- struts2 type="redirectAction"重定向 与动态调用方法
<?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE struts PUBLIC "-/ ...
- C#使用表达式树动态调用方法并实现99乘法表
我们在使用C#编程的时候,经常使用反射来动态调用方法,但有时候需要动态的生成方法,下面介绍使用表达式树的方式来自动生成方法,并调用. 首先需要说明什么是表达式,熟悉Linq的程序猿都用过类似于下面的代 ...
- Guava动态调用方法
前言 大家在Coding的时候,经常会遇到这样一个情况,根据不同的条件去执行对应的代码.我们通常的处理方式是利用if-else判断,或者直接switch-case,特别是jdk1.6之后,swith开 ...
- C# 知识点笔记:IEnumerable<>的使用,利用反射动态调用方法
IEnumerable<T>的使用 创建一个IEnumerable对象 List<string> fruits = new List<string> { " ...
- Struts2 动态调用方法
struts2动态调用方法有两种方式 方式一:用通配符进行调用: Action方法: package com.bjyinfu.struts.actions; public class CatchDyn ...
- Xcode中Objc动态调用方法同时避免警告的几个办法
我们在Xcode中使用objc写代码的时候往往会碰到动态调用方法的时候. 如果是静态调用这很常见,不会有任何问题: [self performSelector:@selector(method)]; ...
- JS动态调用方法名示例介绍
先看看JS的一个函数 JavaScript eval() 函数 定义和用法 eval() 函数可计算某个字符串,并执行其中的的 JavaScript 代码. 语法 eval(string) 参数 描 ...
- java中由类名和方法名字符串实现其调用【反射机制】
js里通过eval()函数,在知道某个方法名是可以实现调用该方法,那么在java里边又怎么实现的呢? java里边是通过反射机制来实现,代码如下: import java.lang.reflect.M ...
- php中怎么使用call_user_func动态调用方法
php中可使用call_user_func进行方法的动态调用,可以动态调用普通函数.类方法以及带参数的类方法1.定义一个普通函数getCurrentDate,用于获取今天日期.call_user_fu ...
随机推荐
- istio部署-sidecar注入
参考 fleeto/sleep fleeto/flaskapp 1. Sidecar注入 1.1 对工作负载的一些要求 支持的工作负载类型:Job,DaemonSet,ReplicaSet,Pod,D ...
- 使用rider做为unity的代码编辑器
使用Rider做的编写Unity代码的IDE,记录一些与VS不相同的笔记 安装和设置方法: 我使用Rider 2019.1 + Unity3D 2018.3.4,在安装完Rider之后,在Unity中 ...
- Linux---用户及权限管理类命令
1.Linux用户 分为三类: 超级用户:拥有最高权限 系统用户:与系统服务相关,但不能用于登录 普通用户:由超级用户创建并赋予权限,只能操作其拥有权限的文件和目录,只能管理自己启动的进程 2.用户管 ...
- BIO/NIO/AIO的区分(十四)
BIO:同步阻塞IO(平常说的IO指的是BIO)NIO:同步非阻塞IOAIO:异步非阻塞IO io操作分为两部分,发起io请求,和io数据读写. 阻塞.非阻塞主要是针对线程发起io请求后,是否立即返回 ...
- zz:一个框架看懂优化算法之异同 SGD/AdaGrad/Adam
首先定义:待优化参数: ,目标函数: ,初始学习率 . 而后,开始进行迭代优化.在每个epoch : 计算目标函数关于当前参数的梯度: 根据历史梯度计算一阶动量和二阶动量:, 计算当前时刻的下降 ...
- z+f数据解析
1.先打开cmd2.把D:\qcc\编译和解析\debug_jiexi\SampleZFS.exe 拉进来.3.SampleZFS.exe -i *.zfs -o D:\*.txt 注意:*号代表文件 ...
- 区块链自问自答 day2
区块链自问自答 day2 区块链的自治性是如何达成的?为什么能够在去信任的环境下自由安全地交换数据? 区块链中有众多的节点,包含了恶意节点.故障节点.正常节点,想要这些节点共同做出一致的决定就需要 ...
- 线段树模板(无lazy优化)
区间修改与区间查询问题 模板: int ans; struct node{ int l,r,v; node(){v=;} }tree[LEN*]; int arr[LEN]; //建树 void bu ...
- BBS_02day
目录 BBS_02day: 展示个人所有文章: 点赞,点彩功能: 评论功能: BBS_02day: 展示个人所有文章: def article_detail(request,username,arti ...
- DVWA Command Injection 通关教程
Command Injection 介绍 命令注入(Command Injection),对一些函数的参数没有做过滤或过滤不严导致的,可以执行系统或者应用指令(CMD命令或者bash命令)的一种注入攻 ...