C#中的反映是什么?我们在应用程序中将这个概念用在哪里?
答案 0 :(得分:16)
Reflection 提供封装程序集,模块和类型的对象(类型为Type)。您可以使用反射来动态创建类型的实例,将类型绑定到现有对象,或从现有对象获取类型并调用其方法或访问其字段和属性。如果您在代码中使用属性,则可以使用反射来访问它们......
作为参考,MSDN article on reflection和代码项目reflection已经很好地解释了......
例如,请查看C# Reflection Examples。
答案 1 :(得分: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;
}
}
}
答案 2 :(得分:2)
您将在框架中找到一种反射的用法:执行特定的功能(在该框架中)使用某些类。但确切的类在编译时是未知的,而是在某个文本文件中配置为classname(通常包括它的程序集)。使用反射,您可以获取该字符串并创建该特定类的实例。
答案 3 :(得分:0)
你有什么反思的答案,在过去我曾经使用它的一些情况:
另请参阅this article了解反射的示例,以及页面底部的其他链接。