C#-反射知识点

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C#-反射知识点相关的知识,希望对你有一定的参考价值。

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#-反射知识点的主要内容,如果未能解决你的问题,请参考以下文章

C#-反射知识点

C#-反射知识点(转载)

java开发--反射技术

C# 知识体系构建| 反射 上

为啥我的 Ray March 片段着色器反射纹理查找会减慢我的帧速率?

OpenGL片段着色器不照亮场景