Реальные примеры отражения - PullRequest
3 голосов
/ 15 мая 2009

Каковы ваши лучшие примеры использования Reflection в производственном коде?

Ответы [ 10 ]

3 голосов
/ 15 мая 2009

ASP.NET MVC выводит действие и контроллер для вызова из URL. Маршрутизация в общем.

2 голосов
/ 15 мая 2009

До выхода Linq To Sql ... Мне пришлось написать свой собственный ORM в .NET 2.0.

Я использовал отражение для отражения:

  • Классы к их хранимым процедурам CRUD
  • Свойства к именам их столбцов
  • Какие операции были действительны для класса

Я также использовал отражение для обработки всех назначений переменных после получения результатов (все классы наследовали класс ActiveRecord, который обрабатывал вызовы в DAL).

Грубые вещи ... но после некоторой настройки производительности это было не так уж и плохо.

2 голосов
/ 15 мая 2009

Совсем недавно мне пришлось использовать отражение, чтобы загрузить сборку (чтобы исследовать ее открытые типы) только с пути сборки.

1 голос
/ 15 мая 2009

В одном из моих недавних приложений, надстройке для Kofax Express, у меня есть опция для OCR файла и вывода PDF. Поскольку у инструмента OCR, который я использую, есть плата за время выполнения, я сделал часть OCR отдельной сборкой. Если файл существует, я показываю параметры OCR и позднее связываю сборку, вызываю необходимые методы и присоединяю к событиям с отражением. Простой подключаемый модуль архитектуры без интерфейсов, который избавляет клиентов от необходимости платить лицензионные отчисления, если им не требуется распознавание текста; мы просто не даем им OCR dll.

1 голос
/ 15 мая 2009

У меня действительно был случай написать Python O / R mapper для одного в один момент, но это было доказательством концепции и никогда не было запущено в производство.

Я проделал довольно большую работу, которая широко использует словарь системных данных в СУБД (например, универсальный медленно меняющийся загрузчик измерений). Можно утверждать, что в принципе это не отличается от рефлексивного программирования.

Наконец, Python во всех его формах очень прост для рефлексии. На самом деле, это настолько хорошо, что я использовал его, чтобы поэкспериментировать с базовыми API на других языках - и использовать отражающие возможности для запросов к базовым интерфейсам. Я сделал это практически со всеми рефлексивными механизмами, которые существуют в мире Python: CPython для API-интерфейсов Python и COM API с использованием makepy, Jython для API-интерфейсов Java и IronPython для .Net API.

1 голос
/ 15 мая 2009

Извлечение данных из таблицы SQL, в которой у вас был идентификатор, тип и другие данные

Тогда вы можете загрузить "Chevrolet" и работать со всеми его методами

0 голосов
/ 15 мая 2009

Внутри фабрики мы используем отражение, чтобы либо передать обратно «фиктивную» реализацию интерфейса, либо реальную (привязанную к БД) реализацию интерфейса, основываясь на классе, указанном в файле свойств (в Java).

0 голосов
/ 15 мая 2009

Мой DAL основан на отражении. Он отражает свойства POCO для построения SQL.

0 голосов
/ 15 мая 2009
  • NUnit Unit Testing Framework - Не очень типично, хотя
  • CSLA много использует отражение
  • Практически любое приложение Windows Forms, поддерживающее плагины
0 голосов
/ 15 мая 2009

WPF Привязка данных:

1) Binding path "(TextBox.Text)" против "Text"?

Если вы связываетесь с путем, называемым Текст, WPF использует отражение для разрешения имени. Если вы используете имя с указанием класса, привязка позволяет избежать снижения производительности отражения. Квалифицированные по классу имена также позволяют привязку к присоединенным свойствам!

(через http://dotnet.org.za/rudi/archive/2008/03/25/10-things-i-didn-t-know-about-wpf-data-binding.aspx)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...