c#输入方法名来调用方法(反射)
using System;
using System.Collections.Generic;
using System.Linq;
using System.Reflection;
using System.Text;
using System.Threading.Tasks; namespace zhiXing
{
class Program
{
static void Main(string[] args)
{
//方法1
/*
Type t = typeof(TestA);
MethodInfo mt = t.GetMethod("My");
TestA ta = new TestA();
string str = (string)mt.Invoke(ta, new object[] { 5 });
*/ //方法2
//加载程序集
Assembly s = Assembly.Load("zhiXing");
//得到类
Type tpe = s.GetType("zhiXing.TestA");
//得到方法
MethodInfo method = tpe.GetMethod("My");
//安全判断
{
//获取需要传入的参数
ParameterInfo[] parms = method.GetParameters();
//这里是判断参数类型
foreach (ParameterInfo ss in parms)
{
if (ss.ParameterType == typeof(int))
{
Console.WriteLine("参数类型匹配");
}
else
{
Console.WriteLine("参数类型不匹配");
}
}
}
//获取 类的对象
object obj = s.CreateInstance("zhiXing.TestA");
//调用
method.Invoke(obj, new object[] { }); }
} public class TestA
{
public void My(int a)
{
Console.WriteLine("哈哈哈哈哈" + a);
Console.ReadKey();
}
} }
=================================================================================================
方法1其实已经实现了,在一个自己的类中,输入自己的方法名来执行函数
实例
public class Execute : MonoBehaviour {
// Use this for initialization
void Start () {
Type t = typeof(Execute);
//获取共有方法
MethodInfo mt = t.GetMethod("My");
//获取私有方法, BindingFlags类型枚举,BindingFlags.NonPublic | BindingFlags.Instance 组合才能获取到private私有方法,
//MethodInfo mt = t.GetMethod("My", BindingFlags.NonPublic | BindingFlags.Instance);
//若公有和私有都要的话 BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.Public
string str = (string)mt.Invoke(this, new object[] { });
}
// Update is called once per frame
void Update () {
}
public void My(int a)
{
Debug.Log("哈哈哈");
}
}
【反射的官方中文文档】
https://docs.microsoft.com/zh-cn/dotnet/csharp/programming-guide/concepts/reflection
有个最简单的办法: Invoke("mothodName", 0)
c#输入方法名来调用方法(反射)的更多相关文章
- Lua中“.”调用方法与“:”调用方法的区别
Lua中“.”调用方法与“:”调用方法的区别: ...
- java反射拼接方法名动态执行方法
近期由于负责项目的一个模块,该模块下有很多分类,每个分类都有一个编码code,这个值是作为一个参数携带过来的.但是每个code确实对应一个方法的. code的值有很多个,自己又不想做ifelse或者s ...
- Eclipse创建新项目时无法输入项目名的解决方法
放假耍了那么久,也是该收心忙活了. 今天打开Eclipse新建项目时,发生了一个很奇怪的情况,就是在下面这个位置的输入框无法输入. 经过百度之后,发现解决方案是(原地址点我) Eclipse图标右键 ...
- JS访问或设置cookie的方法+跨域调用方法
无意中从163网站获取的JS访问或设置cookie的方法,Log到日志上以防遗忘 //COOKIE功能检查function fCheckCookie(){ if(!navigator.cooki ...
- C# 通过方法的字符串名动态调用方法 反射实现
通过字符串执行方法,在可能会调用不同方法时对不同方法进行调用 以下为实例: public class ABC { string str = "通过反射执行的方法"; //Class ...
- 转:.NET获取当前方法名或调用此方法的方法名
Introduction Before .NET, we were always looking for a way to log current method name in a log file ...
- java根据方法名动态调用invoke方法!
public class Activity { public void deal(String name, long id) { System.out.println(name + id + &quo ...
- Spark Pipe使用方法(外部程序调用方法)
写在前面: 1.我们使用的是Hadoop2.2.0,Spark 1.0. 2.这里使用的样例是经典的求pai程序来演示这个开发过程. 3.我们暂时使用java程序来开发,按照需要后面改用scala来开 ...
- aspx反射调用方法
string name = base.Request["action"]; ]); if (obj2 != null) { s = obj2.ToString(); } 传入方法名 ...
随机推荐
- C#隐式FTPS (Implicit FTPS)
實現的方式是通過第三方程式庫實現的,當然最主要的是開源且免費,已測試過沒有問題! 目前還沒有直接取得目錄FileInfo list的方法,不過還好可以用GetDirectoryList來取得類似的結果 ...
- Ubuntu的Unable to locate package无法更新源问题解决方案
https://blog.csdn.net/long19910605/article/details/47017889/ 问题: 更新源时提示不能联网(does the network require ...
- 百度UEditor富文本编辑器去除自动追加p标签
本篇文章还原了我在遇到这个问题时的解决过程: 找到ueditor.all.js文件,搜索 me.addInputRule(function(root){ 或者直接搜索 //进入编辑器的li要套p标签 ...
- C# 由范式编程==运算符引发对string内存分配的思考
今天在看C#编程指南时(类型参数的约束http://msdn.microsoft.com/zh-cn/library/d5x73970.aspx)看到一段描述: 在应用 where T : class ...
- Linux下启动Tomcat项目
在Linux下启动Tomcat项目方法:将war包放进Tomcat的wabapp目录下,进入tomcat目中的bin目录中,运行命令./startup.sh 回车就可以了
- LoadRunner--获取请求的返回结果函数
注:内容来自网络 Action(){ web_set_max_html_param_len("262144"); // 默认最大长度为256 web_reg_save_param( ...
- (一)用C或C ++扩展(翻译)
用C或C ++扩展 如果你知道如何用C语言编程,那么为Python添加新的内置模块是很容易的.这种扩展模块可以做两件不能直接在Python中完成的事情:它们可以实现新的内置对象类型,以及调用C库函数和 ...
- java处理中国气象数据,提取汇总陕西地区24小时各观测点的数据(csv格式)
1.先贴一下气象数据的csv源格式,由于数据内容较多,就放一部分(china_sites_20150102.csv) date,hour,type,1001A,1002A,1003A,1004A,10 ...
- JDBC的概念&使用步骤
概念: JDBC(Java DataBase Connectivity)是一种数据库连接技术,能实现Java程序对各种数据库的访问.由一组使用Java语言编写的类和接口(JDBC API)组成,他们位 ...
- 对IOC的理解
我觉得 IOC 主要分两块去理解, 第一块 IOC是干什么的, 为什么需要IOC ?; 第二块,IOC 这么好,该怎么用? 一: 为什么需要IOC? 回答这个问题就要从ioc的含义入手: IOC ...