C#中的反射

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