码迷,mamicode.com
首页 > Windows程序 > 详细

C#-反射知识点

时间:2016-03-27 15:47:13      阅读:220      评论:0      收藏:0      [点我收藏+]

标签:

1.反射是基于Sytem.Type的,里面的很多方法是system.reflection里面的

  1. MethodInfo[] tt= t.GetType().GetMethods(); //t是string的实例,获得string类型的所有方法,这里面的GetMethods有个BindingFlags枚举类型,写了很多 常用的需要的类
  2. foreach (var item in tt) {
  3. Console.WriteLine(item.ToString());
  4. }
  5. Console.ReadKey();


2.基于程序集的反射

  1. Assembly objAssembly = Assembly.Load("mscorlib,2.0.0.0.0,b77acu87d987asdf98"); //这里的token值是随便写的
  2. Type[] types = objAssembly.GetTypes();
  1. Assembly objAss = Assembly.GetExecutingAssembly();
  2. Type t = objAss.GetType("Reflection.car", false, true);//第一个false表示找不到时不引发异常,第二个true表示忽略大小写查找
  3. Car oo = (Car)Activator.CreateInstance(t); //根据制定的类型创建一个类的实例,因为不直到返回什么,所以covarince为object
  4. MethodInfo mi = t.GetMethod("move"); //move是car类中的方法名
  5. var ismove = (bool)mi.Invoke(oo, null); // 调用MethodInfo的方法Invoke,核实方法move是不是在类oo中
  6. if (ismove) {
  7. Console.WriteLine("is move ");
  8. }
其中的Car是一个类,第3行为我修改后的代码,原代码直接为object,不太严谨,虽然也可以用,但这样写更死一些    
其中assembly的用法参考其他页面





C#-反射知识点

标签:

原文地址:http://www.cnblogs.com/weloveshare/p/5325718.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!