官方定义:微信
反射提供描述程序集、模块和类型的对象(Type 类型)。 能够使用反射动态地建立类型的实例,将类型绑定到现有对象,或从现有对象中获取类型,而后调用其方法或访问器字段和属性。 若是代码中使用了特性,能够利用反射来访问它们。dom
我的理解:函数
当咱们须要获取一个程序集或者一个类的全部属性(名称、类型等)、方法(名称、类型等)等信息时,咱们就须要反射。网站
反射就像一个朦胧的镜子,抽象折射一个程序集或者一个类的全部信息。
反射就像一个朦胧的镜子,抽象折射一个程序集或者一个类的全部信息。
反射就像一个朦胧的镜子,抽象折射一个程序集或者一个类的全部信息。
重复3次,但愿你能咀嚼spa
好比咱们定义一个int类型的i变量,想获取它的类型信息,咱们就能够使用反射.net
// Using GetType to obtain type information: int i = 42; Type type = i.GetType(); Console.WriteLine(type);
输出为:System.Int32。code
或者你会困惑,我不是已经知道了int类型了嘛?还要反射干哈?orm
这里只是举例,那若是是泛型呢?对象
// The following method displays information about a generic // type. private static void DisplayGenericType(Type t) { Console.WriteLine("\r\n {0}", t); Console.WriteLine(" 是不是泛型? {0}", t.IsGenericType); }
若是是加载的程序集呢?blog
// Using Reflection to get information of an Assembly: Assembly info = typeof(int).Assembly; Console.WriteLine(info);
输出为:System.Private.CoreLib, Version=4.0.0.0, Culture=neutral,PublicKeyToken=7cec85d7bea7798e。
当咱们须要获取程序集内的exe的全名时
// Loads an assembly using its file name. Assembly a = Assembly.LoadFrom("MyExe.exe"); // Gets the type names from the assembly. Type[] types2 = a.GetTypes(); foreach (Type t in types2) { Console.WriteLine(t.FullName); }
下列示例演示如何列出类的构造函数,在本例中即指 String 类。
//请注意引用反射命名空间 using System; using System.Reflection; class ListMembers { public static void Main() { Type t = typeof(System.String); Console.WriteLine("Listing all the public constructors of the {0} type", t); //BindingFlags是Reflection空间下的枚举类型 // 使用GetConstructors方法获取Public(公共),Instance(实例)的构造方法 ConstructorInfo[] ci = t.GetConstructors(BindingFlags.Public | BindingFlags.Instance); Console.WriteLine("//Constructors"); PrintMembers(ci); } public static void PrintMembers(MemberInfo[] ms) { foreach (MemberInfo m in ms) { Console.WriteLine("{0}{1}", " ", m); } Console.WriteLine(); } }
当咱们须要获取一个程序集或者一个类的全部属性(名称、类型等)、方法(名称、类型等)等信息时,咱们就须要反射。
反射就像一个朦胧的镜子,抽象折射一个程序集或者一个类的全部信息。
反射就像一个朦胧的镜子,抽象折射一个程序集或者一个类的全部信息。
反射就像一个朦胧的镜子,抽象折射一个程序集或者一个类的全部信息。
更详细的信息参考官方文档
本人不是大佬,只是道路先行者,在落河后,向后来的人大喊一声,这里有坑,不要过来啊!
纵然如此,依旧有人重复着落河,重复着呐喊······
我的博客网站 Blog
文章后续会在公众号更新,微信搜索 OneByOneDotNet 便可关注。
你的一分鼓励,个人十分动力,点赞免费,感恩回馈。喜欢就点赞评论吧,双击6666~