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(); } 传入方法名 ...
随机推荐
- touchmove和touchend的使用
touchstart:当手指触摸屏幕时触发:即使已经有一个手指放在了屏幕上也会触发.touchmove:当手指在屏幕上滑动时连续的触发.在这个事件发生期间,调用preventDefault()可阻止滚 ...
- unity中播放视频
unity中播放视频步骤如下: 1.将要播放的视频拖入projec.(注意:unity一般支持的视频格式有mov, .mpg, .mpeg, .mp4,.avi, .asf格式 ) 2.在场景中添加 ...
- 游戏中遇到的BUG
(1)bug描述:战斗中有英雄死亡,一方掉线之后再次上线,仍然可以看到死亡英雄空血条(英雄受到攻击才会显示血条) 解决方案:原来 当前血量小于英雄血量最大值时,证明英雄受到伤害,血条显示为true I ...
- ubuntu14.10,安装ksnapshot(截图软件)
Linux:ubuntu14.10 ubuntu软件中心对它的描述:KSnapshot captures images of the screen. It can capture the whole ...
- Codeforces Round #546 (Div. 2)D(贪心,思维,SET,VECTOR,模拟)
#include<bits/stdc++.h>using namespace std;int a[300007],b[500007],c[500007];set<int>st[ ...
- Redhat系的Linux系统里,网络主要设置文件简介【转载】
以下是原文地址,转载请指明出处: http://blog.chinaunix.net/uid-26495963-id-3230810.html 一.配置文件详解在RHEL或者CentOS等Redhat ...
- 洛谷P4559 [JSOI2018]列队(主席树)
题面 传送门 题解 首先考虑一个贪心,我们把所有的人按\(a_i\)排个序,那么排序后的第一个人到\(k\),第二个人到\(k+1\),...,第\(i\)个人到\(k+i-1\),易证这样一定是最优 ...
- CF886E Maximum Element
$ \color{#0066ff}{ 题目描述 }$ 从前有一个叫Petya的神仙,嫌自己的序列求max太慢了,于是将序列求max的代码改成了下面这个样子: int fast_max(int n,in ...
- if __name__ == '__main__'是什么意思?如何理解?看到一个很有用的解答
小明.py 朋友眼中你是小明(__name__ == '小明'), 你自己眼中你是你自己(__name__ == '__main__'), 你编程很好, 朋友调你去帮他写程序(import 小明, 这 ...
- BI中的报表业务功能授权使用"自定义主题"