文章目录
- 1.反射(Reflection)
- 1.1 什么是反射?
- 1.2 反射的基本操作
-
- 1.3 调用成员
- 1.4 实例化对象
- 1.5 常见应用场景
- 2.动态编程
- 2.1 什么是动态编程?
- 2.2 dynamic 关键字
- 2.3 动态对象和 ExpandoObject
- 2.4 动态编程的应用场景
- 3.反射与动态编程的对比
- 4.反射与动态编程的综合应用示例
- 示例 1:反射实现对象的深拷贝
- 示例 2:动态对象作为数据容器
- 示例 3:反射与动态编程结合实现插件系统
- 5.总结
1.反射(Reflection)
1.1 什么是反射?
反射(Reflection)是指程序在运行时检查对象的元数据(例如类型、属性、方法等)并进行操作的能力。在 C# 中,反射功能由 System.Reflection 命名空间提供,可以通过它获取程序集(Assembly)、模块(Module)、类型(Type)等信息。
1.2 反射的基本操作
要使用反射,通常需要获取一个对象的 Type,然后可以对其执行各种操作。以下是几个常见的操作示例:
1.2.1 获取类型信息
可以使用 typeof 或 GetType 获取类型信息:
Type type1 = typeof(