Что такое отражение в C#? Где мы используем это понятие в нашем приложении? [закрытый]

9
задан Peter Mortensen 17 December 2010 в 10:10
поделиться

4 ответа

Отражение предоставляет объекты (типа Тип ), которые инкапсулируют сборки, модули и типы. Вы можете использовать отражение для динамического создания экземпляра типа, привязки типа к существующему объекту или получения типа из существующего объекта и вызова его методов или доступа к его полям и свойствам. Если вы используете атрибуты в своем коде, отражение позволяет вам получить к ним доступ ...

Для справки, статья MSDN об отражении и The Code Project довольно хорошо объяснила отражение .

Например, посмотрите Примеры отражения C # .

16
ответ дан 4 December 2019 в 09:12
поделиться

Из документации :

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;
        }
    }
}
5
ответ дан 4 December 2019 в 09:12
поделиться

Выше у вас есть ответы о том, что такое отражение, некоторые случаи, когда я использовал его в прошлом:

  • Универсальный метод, который принимает список свойств и копирует эти свойства из одного объекта в другой
  • A Метод, который использует атрибут Description для получения текста для перечисления, аналогично this

Также см. эту статью , где приведены примеры отражения и дальнейшие ссылки внизу страницы.

0
ответ дан 4 December 2019 в 09:12
поделиться

Одно из применений отражения, которое вы найдете в фреймворках: для выполнения определенной функции (в этом фреймворке) используется некоторый класс. Но точный класс не известен во время компиляции, вместо этого он настраивается в каком-то текстовом файле как имя класса (обычно включая его сборку). Используя отражение, вы можете взять эту строку и создать экземпляр этого конкретного класса.

2
ответ дан 4 December 2019 в 09:12
поделиться
Другие вопросы по тегам:

Похожие вопросы: