Я читал статью в msdn о отражение, но я не смог понять ее даже 10% о ее пользе, ее использовании.
Не могли бы вы дать краткий обзор того, что такое отражение, и как я могу извлечь выгоду из этого.
Я читал статью в msdn о отражение, но я не смог понять ее даже 10% о ее пользе, ее использовании.
Не могли бы вы дать краткий обзор того, что такое отражение, и как я могу извлечь выгоду из этого.
Отражение позволяет вам писать код, который может проверять различные аспекты самого кода.
Это позволяет вам делать простые вещи, например:
Проверьте тип объекта во время выполнения (простые вызовы typeof()
например)
Осмотреть атрибуты объекта во время выполнения, чтобы изменить поведение метода (различные методы сериализации в .NET)
К более сложным задачам, таким как:
Раньше это гораздо более распространенное использование. Позже это помогает разработчикам, работающим над подключаемыми архитектурами для своих приложений, или людям, которые хотят менять сборки во время выполнения в зависимости от изменений конфигурации.
Отражение - это способ, с помощью которого вы программно обнаруживаете типы во время выполнения. Это очень важно, потому что языки .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 и как она используется в библиотеках и во время выполнения.
Отражение позволяет использовать методы и свойства кода, о которых вы не знали, когда компилировался код. Один из встроенных классов, который использует это, - XmlSerializer. Вы можете передать ему любой объект, который хотите преобразовать в XML. Он запрашивает объект, что все его свойства используют отражение, затем может сделать XML-документ, содержащий необходимые элементы для представления объекта.
Отражение - это способность типов предоставлять информацию о себе. Например, сборка может рассказать вам, что она содержит, тип может рассказать вам о его методах, свойствах и т.д.
Динамическое предоставление этой информации полезно во многих отношениях. Один простой пример - метаданные, используемые веб-службами - когда человек "потребляет" веб-службу, для своего клиента создается прокси-класс. Этот прокси генерируется из документа WSDL и чаще всего генерируется из метаданных типа, сгенерированных путем отражения.
Другим простым примером является динамическая загрузка типов для выполнения некоторой единицы работы. В одном проекте я работал над использованием отражения для загрузки "правил" из базы данных для применения к входам в систему.
Отражение помогает сделать метапрограммирование, что неоспоримо один из самых привлекательных методов программирования. Google для метапрограммирования для получения дополнительной информации.
Одним из преимуществ рефлексии является то, что он позволяет сохранять все изменения в дизайнере набора данных, как транзакция в SQL
Отражение - это мощное пространство имен, доступное в asp.net. используя его, мы можем создать динамическое время выполнения объекта и вызвать его. В основном он используется при разработке приложений типа framework.