首先,先随便创建一个测试类

  1. <span style="font-family:Microsoft YaHei;font-size:18px;">public class ABC
  2. {
  3. public void test1()
  4. {
  5. Debug.Log("test111");
  6. }
  7. public void test2()
  8. {
  9. Debug.Log("test2222");
  10. }
  11. }</span>

下面是利用反射技术,将字符串转化为类名并遍历类中所有方法(我是在Unity中进行测试的,在C#其他项目中调用也是一样的)

  1. <span style="font-family:Microsoft YaHei;font-size:18px;">public class NewBehaviourScript : MonoBehaviour {
  2. // Use this for initialization
  3. void Start () {
  4. string aa = "ABC";</span>
  1. <span style="font-family:Microsoft YaHei;font-size:18px;">        Type t;
  2. t = Type.GetType(aa);
  3. var obj = t.Assembly.CreateInstance(aa);
  4. <span style="white-space:pre">    </span>//var obj = System.Activator.CreateInstance(t);
  1. MethodInfo[] info = t.GetMethods();
  2. for (int i = 0; i < info.Length; i++)
  3. {
  4. info[i].Invoke(obj, null);
  5. }
  6. an>

这么调用将会报出参数数量不匹配的错误,如图:

我们加入下面几行代码,就会恍然大悟。

  1. <span style="font-family:Microsoft YaHei;font-size:18px;">        Debug.Log("方法数量:" + info.Length);
  2. for (int i = 0; i < info.Length; i++)
  3. {
  4. string str = info[i].Name;
  5. Debug.Log("方法名:" + str);
  6. }</span>

大家注意,反射出来的方法数量其实不是2个,而是6个,C#反射自带了4个方法,分别是Equals,GetHashCode,GetType,ToString方法,如图,打印结果为:

如果不想遍历全部方法的话,也可以指定方法名进行调用,添加如下代码即可

    1. <span style="font-family:Microsoft YaHei;font-size:18px;">        MethodInfo method = t.GetMethod("test2");
    2. method.Invoke(obj, null);</span>

最新文章

  1. 【Java并发编程实战】-----&ldquo;J.U.C&rdquo;:CAS操作
  2. java基础知识(十一)java反射机制(下)
  3. java获取客户端ID地址
  4. JSP 动作元素
  5. Vim 插件之 NERDTree
  6. 第六十五篇、OC_iOS7 自定义转场动画push pop
  7. c#-委托,匿名方法,lambda表达的关系
  8. Hadoop之WordCount详解
  9. Java基础6:代码块与代码加载顺序
  10. 个人 git-hub使用方法
  11. PHP中一些常用知识点
  12. 通过JS页面唤醒app(安卓+ios)
  13. 描述性统计的matlab实现
  14. html5 canvas 奇怪的形状垂直渐变
  15. oracle索引优化
  16. .gitignore 无效问题
  17. [应用篇]第三篇 JSP 标准标签库(JSTL)总结
  18. bzoj 4332: JSOI2012 分零食 快速傅立叶变换
  19. pyQt: eg3
  20. ASPLOS'17论文导读——SC-DCNN: Highly-Scalable Deep Convolutional Neural Network using Stochastic Computing

热门文章

  1. php中的各种http报错的报错的状态码的分析
  2. python面向对象 : 反射和内置方法
  3. 安装时提示 INSTALL_PARSE_FAILED_MANIFEST_MALFORMED 解决办法
  4. document.createRange剪贴板API
  5. Pyhton基础知识(一)
  6. 高通9X07模块QMI架构使用入门
  7. BCGcontrolBar(八) Ribbon图标变换
  8. DNS污染
  9. [SDOI2016]生成魔咒(后缀自动机)
  10. 1-scala基础