赞
踩
在 C# 中,反射是一种能够在运行时检查类型信息、访问属性和调用方法的机制。通过反射,你可以动态地操作类型、对象和程序集,而无需在编译时知道这些类型的具体信息。
反射提供了一组 API,可以让你在运行时获取和操作类型的信息。下面是一些常用的反射功能:
typeof 关键字或 Type.GetType 方法来获取类型的信息。Type type1 = typeof(MyClass); // 获取类型信息
Type type2 = Type.GetType("Namespace.MyClass"); // 通过类型名称获取类型信息
GetField、GetProperty、GetMethod 等方法来获取字段、属性、方法等成员的信息。Type type = typeof(MyClass);
FieldInfo field = type.GetField("fieldName"); // 获取字段信息
PropertyInfo property = type.GetProperty("propertyName"); // 获取属性信息
MethodInfo method = type.GetMethod("methodName"); // 获取方法信息
Activator.CreateInstance 方法来创建对象,以及 MethodInfo.Invoke 方法来调用方法。object obj = Activator.CreateInstance(type); // 创建对象
method.Invoke(obj, parameters); // 调用方法
Assembly assembly = Assembly.Load("AssemblyName"); // 加载程序集
Type[] types = assembly.GetTypes(); // 获取程序集中的所有类型
5.使用反射通过 Assembly 类来创建对象并调用方法
// 加载程序集
Assembly assembly = Assembly.Load("MyAssembly");
// 获取类型信息
Type type = assembly.GetType("MyNamespace.MyClass");
// 创建对象
object obj = Activator.CreateInstance(type);
// 调用方法
MethodInfo method = type.GetMethod("MyMethod");
method.Invoke(obj, null);
反射是一个强大的工具,可以用于许多高级用途,例如插件系统、序列化和反序列化对象、自定义注解和解析器等。但是需要注意,由于反射操作是在运行时进行的,所以会带来性能开销和安全性方面的考量。因此,在使用反射时需要谨慎考虑其影响。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。