.Net Review
С# Рефлексия часть 1. Зачем нужна?
В информатике отражение или рефлексия означает процесс, во время которого программа может отслеживать и модифицировать собственную структуру и поведение во время выполнения. Парадигма программирования, положенная в основу отражения, называется рефлексивным программированием. Это один из видов метапрограммирования.
Во время выполнения программных инструкций (кода) компьютеры обрабатывают данные, что приводит к их изменению, при этом компьютеры не изменяют код. Однако, в большинстве современных компьютерных архитектур код хранится как данные, и в некоторых языках программирования реализована возможность обрабатывать собственный код как данные, что приводит к изменению уже самого кода во время его выполнения.
Когда использовать?
Рефлексия не частый в использовании инструмент в C#, однако важно знать, что он позволяет делать. Яркими примерами использования рефлексии является применением в реализации IOC (Inversion of Control, про IOC можно будет узнать в нашем телеграмм канале). Также используется для получении информации о методах классах и т.д. в библиотеках. Можно к примеру получить данные о методе и использовать его, ещё примеры пишите в комментариях.
Работа с рефлексией в C#
Для работы с рефлексией необходимо подключить пространство имен System.Reflection, которое позволяет работать со следующими классами (описаны основные классы):
- MemberInfo: базовый абстрактный класс, определяющий общий функционал для классов EventInfo, FieldInfo, MethodInfo и PropertyInfo.
- EventInfo: класс, хранящий информацию о событии.
- FieldInfo: хранит информацию об определенном поле типа.
- MethodInfo: хранит информацию об определенном методе.
- PropertyInfo: хранит информацию о свойстве.
- ParameterInfo: класс, хранящий информацию о параметре метода.
Также используя класс System.Type, который содержит методы получения данных методов, классов, событий и т.д. Эти методы возвращают классы из System.Reflection.
Подробнее об использовании рефлексии в следующий статьях. Спасибо за внимание!
Наш телеграмм канал: https://t.me/dotnetreview