c#反射用法

在 C# 中,反射是一种能够在运行时检查类型信息、访问属性和调用方法的机制。通过反射,你可以动态地操作类型、对象和程序集,而无需在编译时知道这些类型的具体信息。

反射提供了一组 API,可以让你在运行时获取和操作类型的信息。下面是一些常用的反射功能:

  1. 获取类型信息:你可以使用 typeof 关键字或 Type.GetType 方法来获取类型的信息。
csharp 复制代码
Type type1 = typeof(MyClass); // 获取类型信息
Type type2 = Type.GetType("Namespace.MyClass"); // 通过类型名称获取类型信息
  1. 获取成员信息:你可以使用 GetFieldGetPropertyGetMethod 等方法来获取字段、属性、方法等成员的信息。
csharp 复制代码
Type type = typeof(MyClass);
FieldInfo field = type.GetField("fieldName"); // 获取字段信息
PropertyInfo property = type.GetProperty("propertyName"); // 获取属性信息
MethodInfo method = type.GetMethod("methodName"); // 获取方法信息
  1. 创建对象和调用方法:使用 Activator.CreateInstance 方法来创建对象,以及 MethodInfo.Invoke 方法来调用方法。
csharp 复制代码
object obj = Activator.CreateInstance(type); // 创建对象
method.Invoke(obj, parameters); // 调用方法
  1. 操作程序集:你可以加载、检索和操作程序集的信息,以及对其中的类型进行操作。
csharp 复制代码
Assembly assembly = Assembly.Load("AssemblyName"); // 加载程序集
Type[] types = assembly.GetTypes(); // 获取程序集中的所有类型

5.使用反射通过 Assembly 类来创建对象并调用方法

csharp 复制代码
// 加载程序集
        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);

反射是一个强大的工具,可以用于许多高级用途,例如插件系统、序列化和反序列化对象、自定义注解和解析器等。但是需要注意,由于反射操作是在运行时进行的,所以会带来性能开销和安全性方面的考量。因此,在使用反射时需要谨慎考虑其影响。

相关推荐
薄荷撞~可乐1 小时前
C#拆箱/装箱(性能优化)
性能优化·c#
胖咕噜的稞达鸭2 小时前
C++中的父继子承(2)多继承菱形继承问题,多继承指针偏移,继承组合分析+高质量习题扫尾继承多态
c语言·开发语言·数据结构·c++·算法·链表·c#
Dm_dotnet3 小时前
WPF应用绑定系统快捷键
c#
.NET修仙日记3 小时前
SQL Server实战指南:从基础CRUD到高并发处理的完整面试题库
面试·职场和发展·c#·.net·sql server·.net全栈经典面试题库
武文斌775 小时前
项目学习总结:CAN总线、摄像头、STM32概述
linux·arm开发·stm32·单片机·嵌入式硬件·学习·c#
sali-tec5 小时前
C# 基于halcon的视觉工作流-章46-不匀面划痕
人工智能·算法·计算机视觉·c#
数字化顾问6 小时前
从 DAG 到 Shuffle:掌握 Spark RDD 宽窄依赖的调优密码
c#·linq
Happy coder8 小时前
【avalonia教程】11字符串格式化、avalonia自带绑定值的转换
c#·avalonia
Panda__Panda15 小时前
docker项目打包演示项目(数字排序服务)
运维·javascript·python·docker·容器·c#
weixin_4569042715 小时前
基于.NET Framework 4.0的串口通信
开发语言·c#·.net