C# 反射

tech2025-11-18  4

对于反射贫道也是很陌生的,所以趁现在有时间就把反射看了一下,记下笔记!!! 反射的定义:反射(Reflection)是.NET中的重要机制,通过放射,可以在运行时获得.NET中每一个类型(包括类、结构、委托、接口和枚举等)的成员,包括方法、属性、事件,以及构造函数等。还可以获得每个成员的名称、限定符和参数等。有了反射,即可对每一个类型了如指掌。如果获得了构造函数的信息,即可直接创建对象,即使这个对象的类型在编译时还不知道。   1,导入using System.Reflection;   2,Assembly.Load("程序集")//Assembly.LoadFile("外部调用的动态库")加载程序集,返回类型是一个Assembly   3,   foreach (Type type in assembly.GetTypes())             {                 string t = type.Name;             }    得到程序集中所有类的名称   4,Type type = assembly.GetType("程序集.类名");获取当前类的类型   5,Activator.CreateInstance(type); 创建此类型实例   6,MethodInfo mInfo = type.GetMethod("方法名");获取当前方法   7,mInfo.Invoke(null,方法参数);  这些是反射的一些基本应用,,,

 (1)使用Assembly定义和加载程序集,加载在程序集清单中列出模块,以及从此程序集中查找类型并创建该类 型的实例。 (2)使用Module了解包含模块的程序集以及模块中的类等,还可以获取在模块上定义的所有全局方法或其他特 定的非全局方法。 (3)使用Constructorinfo了解构造函数的名称、参数、访问修饰符(如pulic或private)和实现详细信息(如 abstract或virtual〉等。使用Type的GetConstructors或GetConstructor方法来调用特定的构造函数。 (.4)使用Methodinfo了解方法的名称、返回类型、参数、访问修饰符(如pulic或private)和实现详细信息(如 abstract或virtual)等。使用Type的GetMethods或GetMethod方法来调用特定的方法。 (5)使用Fiedlnfo了解字段的名称、访间修饰符(如public或private)和实现详细信息(如static)等,并获取或 设置字段值。 (6)使用Eventinfo了解事件的名称、事件处理程序数据类型、自定义属性、声明类型和反射类型等,添加或移 除事件处理程序。 (7)使用Propertyinfo了解属性的名称、数据类型、声明类型、反射类型和只读或可写状态等,获取或设置属性 值。 (8)使用Parameterinfo了解参数的名称、数据类型、是输入参数还是输出参数,以及参数在方法签名中的位置 等。  

最新回复(0)