复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63using 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[] { 5 }); } } public class TestA { public void My(int a) { Console.WriteLine("哈哈哈哈哈" + a); Console.ReadKey(); } } }
=================================================================================================
方法1其实已经实现了,在一个自己的类中,输入自己的方法名来执行函数
实例
复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19public class Execute : MonoBehaviour { // Use this for initialization void Start () { Type t = typeof(Execute); MethodInfo mt = t.GetMethod("My"); string str = (string)mt.Invoke(this, new object[] { 5 }); } // 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
转载于:https://www.cnblogs.com/sanyejun/p/8575458.html
最后
以上就是孝顺橘子最近收集整理的关于c#输入方法名来调用方法(反射)的全部内容,更多相关c#输入方法名来调用方法(反射)内容请搜索靠谱客的其他文章。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复