什么是C#中的反映?我们在申请中将这个概念用在哪里?

HIT*_*ESH 9 c# asp.net

什么是C#中的反映?我们在应用程序中将这个概念用在哪里?

ACP*_*ACP 16

Reflection提供了封装程序集,模块和类型的对象(Type类型).您可以使用反射来动态创建类型的实例,将类型绑定到现有对象,或从现有对象获取类型并调用其方法或访问其字段和属性.如果您在代码中使用属性,则可以使用反射来访问它们...

作为参考,MSDN关于反思的文章和The Code Project的反思很好地解释了..

例如,看看C#反射示例.


Kla*_*sen 5

文档:

Reflection提供了封装程序集,模块和类型的对象(Type类型).您可以使用反射来动态创建类型的实例,将类型绑定到现有对象,或从现有对象获取类型并调用其方法或访问其字段和属性.如果您在代码中使用属性,则Reflection允许您访问它们.有关更多信息,请参阅属性.

维基百科说:

在计算机科学中,反射是计算机程序可以观察和修改其自身结构和行为的过程.反射驱动的编程范式称为反射编程.这是一种特殊的元编程.

例如,如果要以编程方式显示类的所有方法,可以这样做:

using System;
using System.Reflection;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {

            var t = typeof(MyClass);

            foreach (var m in t.GetMethods())
            {
                Console.WriteLine(m.Name);
            }
            Console.ReadLine();
        }
    }


    public class MyClass
    {
        public int Add(int x, int y)
        {
            return x + y;
        }

        public int Subtract(int x, int y)
        {
            return x - y;
        }
    }
}
Run Code Online (Sandbox Code Playgroud)