Отражение предоставляет объекты (типа Тип ), которые инкапсулируют сборки, модули и типы. Вы можете использовать отражение для динамического создания экземпляра типа, привязки типа к существующему объекту или получения типа из существующего объекта и вызова его методов или доступа к его полям и свойствам. Если вы используете атрибуты в своем коде, отражение позволяет вам получить к ним доступ ...
Для справки, статья MSDN об отражении и The Code Project довольно хорошо объяснила отражение .
Например, посмотрите Примеры отражения C # .
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;
}
}
}
Выше у вас есть ответы о том, что такое отражение, некоторые случаи, когда я использовал его в прошлом:
Также см. эту статью , где приведены примеры отражения и дальнейшие ссылки внизу страницы.
Одно из применений отражения, которое вы найдете в фреймворках: для выполнения определенной функции (в этом фреймворке) используется некоторый класс. Но точный класс не известен во время компиляции, вместо этого он настраивается в каком-то текстовом файле как имя класса (обычно включая его сборку). Используя отражение, вы можете взять эту строку и создать экземпляр этого конкретного класса.