Подтвердить что ты не робот

Что является отражением в С#, какова польза. Как использовать его, чтобы получить benifit

Я читал статью в msdn о отражение, но я не смог понять ее даже 10% о ее пользе, ее использовании.

Не могли бы вы дать краткий обзор того, что такое отражение, и как я могу извлечь выгоду из этого.

4b9b3361

Ответ 1

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

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

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

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

К более сложным задачам, таким как:

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

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

Ответ 2

Отражение - это способ, с помощью которого вы программно обнаруживаете типы во время выполнения. Это очень важно, потому что языки .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 С# 2008 и платформа .NET 3.5, четвертое издание, глава 16. Он очень подробно анализирует систему типов .NET и как она используется в библиотеках и во время выполнения.

Ответ 3

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

Ответ 4

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

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

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

Ответ 5

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

Ответ 6

Одним из преимуществ рефлексии является то, что он позволяет сохранять все изменения в дизайнере набора данных, как транзакция в SQL

Ответ 7

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