反射的概念在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
