C#反射是动态调用程序集的一种强大技术。使用反射技术,您可以在运行时获取程序集元数据,并在应用程序中调用属性、方法或构造函数等成员,甚至可以使用其它程序集的对象。以下是基本的C#反射使用方法:
- 获取程序集
使用System.Reflection命名空间中的Assembly类,可以在应用程序中加载和获取程序集。以下代码演示了如何获取程序集。
Assembly assembly = Assembly.LoadFile(@"C:\Sample.dll"); // 加载程序集
2.获取类型
获取程序集之后,您可以使用Assembly类的GetType方法获取类型信息。以下代码演示了如何获取类型。
Type type = assembly.GetType("Sample.ClassName"); // 从程序集中获取类型信息
3.获取成员
获取类型信息之后,您可以使用Type类的GetField、GetProperty、GetMethod等方法获取字段、属性和方法等成员。以下代码演示了如何获取成员。
FieldInfo field = type.GetField("FieldName"); // 获取字段信息
PropertyInfo property = type.GetProperty("PropertyName"); // 获取属性信息
MethodInfo method = type.GetMethod("MethodName"); // 获取方法信息
4.调用成员
获取成员之后,您可以使用MethodInfo类的Invoke方法调用方法。以下代码演示了如何调用方法。
object instance = Activator.CreateInstance(type); // 创建对象实例
object result = method.Invoke(instance, new object[] { param1, param2 }); // 调用方法并获取返回值
反射功能强大,可以实现很多复杂的任务。但是,请注意,反射的性能比直接调用代码要低,因此应该谨慎使用。