反射的概念在c#中非常简单。
反射是收集其组件中的信息的过程。
反射是程序从程序集中提取元数据的一种方法。
当一个程序被元数据用来修改自己的行为时,它会反映自己。
它使用以下命名空间
命名空间:system.reflection
以下是System.reflection命名空间中定义的主要类
EventInfo
此类保存给定事件的信息。
FieldInfo
此类保存给定字段的信息。
MemberInfo
类是用于获取有关类的所有成员的信息的类的抽象基类
MethodInfo
此类包含给定方法的信息。
ConstructorInfo
此类包含给定构造函数的信息。
如果在程序中使用了属性,反射使您能够访问它们。
反射用于执行以下任务
- 查看元数据
- 执行类型发现
- 对方法和属性的后期绑定
C# 反射示例
using System; using System.Collections.Generic; using System.Text; using System.Reflection; namespace ReflectionExample { class Program { private static int x = 5, y = 10; static void Main(string[] args) { Console.WriteLine("x + y = " + (x + y)); Console.WriteLine("--------请输入需要修改的变量名--------"); string varName = Console.ReadLine(); Type t = typeof(Program); FieldInfo fieldInfo = t.GetField(varName, BindingFlags.NonPublic | BindingFlags.Static); if (fieldInfo != null) { Console.WriteLine("" + fieldInfo.Name + " 的当前值是 " + fieldInfo.GetValue(null) + ". 现在你可以输入新值:"); string newValue = Console.ReadLine(); int newInt; if (int.TryParse(newValue, out newInt)) { fieldInfo.SetValue(null, newInt); Console.WriteLine("x + y = " + (x + y)); } Console.ReadLine(); } } } }
日期:2020-04-11 23:03:48 来源:oir作者:oir