当前位置: 首页 > news >正文

c#反射用法

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

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

  1. 获取类型信息:你可以使用 typeof 关键字或 Type.GetType 方法来获取类型的信息。
Type type1 = typeof(MyClass); // 获取类型信息
Type type2 = Type.GetType("Namespace.MyClass"); // 通过类型名称获取类型信息
  1. 获取成员信息:你可以使用 GetFieldGetPropertyGetMethod 等方法来获取字段、属性、方法等成员的信息。
Type type = typeof(MyClass);
FieldInfo field = type.GetField("fieldName"); // 获取字段信息
PropertyInfo property = type.GetProperty("propertyName"); // 获取属性信息
MethodInfo method = type.GetMethod("methodName"); // 获取方法信息
  1. 创建对象和调用方法:使用 Activator.CreateInstance 方法来创建对象,以及 MethodInfo.Invoke 方法来调用方法。
object obj = Activator.CreateInstance(type); // 创建对象
method.Invoke(obj, parameters); // 调用方法
  1. 操作程序集:你可以加载、检索和操作程序集的信息,以及对其中的类型进行操作。
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);

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

http://www.lryc.cn/news/288971.html

相关文章:

  • WPF行为
  • N-141基于springboot,vue网上拍卖平台
  • Unity之Cinemachine教程
  • java面面试面经(面试过程)
  • 大语言模型-大模型基础文献
  • 【RH850U2A芯片】Reset Vector和Interrupt Vector介绍
  • Zabbix交换分区使用率过高排查
  • ‘HEAD‘ 是 HTTP 请求的一种方法
  • go语言(十七)----json
  • Java笔记 --- 四、异常
  • Ubuntu20.04配置grub ,不必每次都输入 nomodeset
  • PBM模型学习(七)核化模型
  • 蓝桥小白赛4 乘飞机 抽屉原理 枚举
  • HTML新手教程
  • P1226 【模板】快速幂题解
  • 文旅游戏的多元应用场景
  • 小波变化最通俗的解释,小波变换是用来干什么的,类似小波变换功能的算法有哪些?
  • Servlet 与 MVC
  • 基于单片机的感应自动门控制器的设计
  • 兄弟HL-1208黑白激光打印机清零方法
  • 第二百八十八回
  • 【日常学习笔记】gtest
  • go-zero配置DB的redis缓存
  • 物理服务器
  • 3.3 实验三:以太网链路聚合实验
  • php mysql字段默认值使用问题
  • 【linux】Debian防火墙
  • 2022年至2023年广东省职业院校技能大赛高职组“信息安全管理与评估”赛项样题
  • CC++内存管理【非常详细,对新手友好】
  • 022-安全开发-PHP应用留言板功能超全局变量数据库操作第三方插件引用