C#-反射知识点
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C#-反射知识点相关的知识,希望对你有一定的参考价值。
1.反射是基于Sytem.Type的,里面的很多方法是system.reflection里面的
MethodInfo[] tt= t.GetType().GetMethods(); //t是string的实例,获得string类型的所有方法,这里面的GetMethods有个BindingFlags枚举类型,写了很多 常用的需要的类
foreach (var item in tt) {
Console.WriteLine(item.ToString());
}
Console.ReadKey();
2.基于程序集的反射
Assembly objAssembly = Assembly.Load("mscorlib,2.0.0.0.0,b77acu87d987asdf98"); //这里的token值是随便写的
Type[] types = objAssembly.GetTypes();
Assembly objAss = Assembly.GetExecutingAssembly();
Type t = objAss.GetType("Reflection.car", false, true);//第一个false表示找不到时不引发异常,第二个true表示忽略大小写查找
Car oo = (Car)Activator.CreateInstance(t); //根据制定的类型创建一个类的实例,因为不直到返回什么,所以covarince为object
MethodInfo mi = t.GetMethod("move"); //move是car类中的方法名
var ismove = (bool)mi.Invoke(oo, null); // 调用MethodInfo的方法Invoke,核实方法move是不是在类oo中
if (ismove) {
Console.WriteLine("is move ");
}
其中的Car是一个类,第3行为我修改后的代码,原代码直接为object,不太严谨,虽然也可以用,但这样写更死一些
其中assembly的用法参考其他页面
以上是关于C#-反射知识点的主要内容,如果未能解决你的问题,请参考以下文章