Практическое использование для нового RTTI Delphi - Атрибуты, Значения

Я нашел большое объяснение о новом RTTI в Delphi, но я не понимаю одну важную вещь обо всем, что я считал - Где я могу использовать это?

Что это, как предполагается, заменяет?

19
задан Leonardo Herrera 20 February 2012 в 14:14
поделиться

2 ответа

Расширенный RTTI работает как Reflection в .NET. Это дает вам доступ к информации о внутренней структуре вашего приложения. Вы можете получить доступ к свойствам класса, методам и т. Д. Во время выполнения, в той степени, в которой вы не могли этого сделать раньше.

Некоторые способы использования:

  1. Сериализация / десериализация классов в XML или другие носители.
  2. Отображение объектов в базы данных. ORM.
  3. Клонирование объектов
  4. Динамический вызов методов
  5. «Сканирование» объекта во время выполнения и действия в соответствии с ним.
  6. Более простая разработка систем типа "плагин"

Вероятно, существует множество сценариев, в которых его было бы полезно использовать. Короче говоря, это добавляет динамический аспект вашему приложению. Ваш продукт может делать некоторые вещи во время выполнения и более эффективно, чем проектировать все во время разработки. Это не серебряная пуля, и многие люди никогда не воспользуются ею. Но некоторые шаблоны проектирования или некоторые проблемы просто не могут быть решены (по крайней мере, неэффективно) без использования нового RTTI

20
ответ дан 30 November 2019 в 04:29
поделиться

Один из примеров, где может быть полезен расширенный RTTI:

До сегодняшнего дня свойства формы должны были быть опубликованы , потому что эта видимость была необходима для сериализации / десериализации файлов форм Delphi (dfm).

Благодаря расширенному RTTI Delphi может использовать новый уровень потоковой передачи, который не требует такого высокого уровня видимости. Конечно, это только идея, но на практике все компоненты формы могут быть частными или защищенными . Это будет больше ООП (инкапсуляция) и устранит «шум», вызванный десятками нерелевантных записей в списке полей / свойств формы, видимых снаружи.


Другим типичным вариантом использования расширенного RTTI являются структуры инверсии управления и внедрения зависимостей .

Например, Delphi Spring Framework Delphi требует Delphi 2010 (или выше) из-за интенсивного использования RTTI, который можно использовать для внедрения конструктора .

5
ответ дан 30 November 2019 в 04:29
поделиться
Другие вопросы по тегам:

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