что является отражением в C#, что является преимуществом. Как использовать его для получения [закрытой] пользы

39
задан Shantanu Gupta 23 June 2010 в 12:31
поделиться

5 ответов

Отражение позволяет писать код, который может проверять различные аспекты самого кода.

Это позволяет делать простые вещи, например:

  1. Проверять тип объекта во время выполнения (например, простые вызовы typeof () )

  2. Проверять атрибуты объекта во время выполнения для изменения поведения метода (различные методы сериализации в .NET)

Для гораздо более сложных задач, таких как:

  1. Загрузка сборки во время выполнения, поиск определенного класса, определение, соответствует ли он заданному интерфейсу, и вызов некоторые члены динамически.

Более раннее употребление встречается гораздо чаще. Последний полезен разработчикам, работающим над архитектурами подключаемых модулей для своих приложений, или людям, которые хотят менять сборки во время выполнения в зависимости от изменений конфигурации.

48
ответ дан 27 November 2019 в 02:31
поделиться

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

Динамическое предоставление этой информации полезно во многих отношениях. Один простой пример - метаданные, используемые веб-службами: когда человек "потребляет" веб-службу, для его клиента создается прокси-класс. Этот прокси генерируется из WSDL-документа, который чаще всего генерируется из метаданных типа, созданных с помощью рефлексии.

Другой простой пример - динамическая загрузка типов для выполнения некоторой единицы работы. В одном из проектов, над которым я работал, отражение использовалось для загрузки "правил" из базы данных, чтобы применить их к входам в систему.

5
ответ дан 27 November 2019 в 02:31
поделиться

Отражение помогает вам выполнять метапрограммирование, которое, несомненно, является одной из самых крутых техник программирования. Для получения дополнительной информации наберите в Google "метапрограммирование".

1
ответ дан 27 November 2019 в 02:31
поделиться

Отражение позволяет вашему коду вызывать методы и свойства, о которых вы не знали при компиляции кода. Один из встроенных классов, который использует это, - XmlSerializer. Вы можете передать ему любой объект, который хотите преобразовать в XML. Он спрашивает объект, все ли его свойства используют отражение, а затем может создать XML-документ, содержащий необходимые элементы для представления объекта.

10
ответ дан 27 November 2019 в 02:31
поделиться

Отражение - это способ программного обнаружения типов во время выполнения. Это очень важно, потому что языки .NET строго типизированы. Возможность доступа к этим метаданным чрезвычайно полезна.

Большая вещь прямо сейчас (свободные интерфейсы / адаптеры) в значительной степени зависит от рефлексии. В частности, статическое отражение довольно велико. Если вы хотите увидеть конкретные примеры и хорошее объяснение статического отражения, посетите:

http://jagregory.com/writings/introduction-to-static-reflection/
http: //www.lostechies. com / blogs / gabrielschenker / archive / 2009/02/03 / dynamic-Reflection-versus-static-reflection.aspx

Конечно, это небольшая часть отражений в целом. Если вам нужна дополнительная информация об общем использовании отражения, ознакомьтесь с Apress Pro C # 2008 и платформой .NET 3.5, четвертое издание , глава 16. В нем довольно подробно рассматривается тип .NET. system и как это используется в библиотеках и во время выполнения.

13
ответ дан 27 November 2019 в 02:31
поделиться
Другие вопросы по тегам:

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