Я нашел отличное объяснение нового RTTI в Delphi, но я не понимаю одну важную вещь обо всем, что я прочитал - Where я могу использовать это?
Что он должен заменить?
Я нашел отличное объяснение нового RTTI в Delphi, но я не понимаю одну важную вещь обо всем, что я прочитал - Where я могу использовать это?
Что он должен заменить?
Расширенный RTTI работает как Reflection в .NET. Это дает вам доступ к вашей внутренней структуре структуры приложения. Вы можете получить доступ к свойствам класса, методам и т.д. Во время выполнения, в той степени, в какой вы не могли этого сделать раньше.
Некоторые способы использования:
Вероятно, есть много сценариев, где было бы полезно использовать его. Короче говоря, он добавляет динамический аспект в ваше приложение. Ваш продукт способен выполнять некоторые функции во время выполнения и более эффективно, чем проектирование всего в режиме разработки. Это не серебряная пуля, и многие люди никогда не смогут ее использовать. Но некоторые шаблоны проектирования или некоторые проблемы просто не могут быть решены (по крайней мере, неэффективно) без использования нового RTTI
Один пример, где может быть полезен расширенный RTTI:
До сегодняшнего дня свойства формы должны были быть опубликованы, потому что эта видимость была необходима для сериализации/десериализации файлов формы Delphi (dfm).
С расширенным RTTI Delphi может использовать новый потоковый уровень, который не требует такого высокого уровня видимости. Конечно, это только идея, но на практике имеет то преимущество, что все компоненты в форме могут быть private или защищены. Это будет больше ООП (инкапсуляция) и исключить "шум", вызванный множеством нерелевантных записей в списке полей/свойств формы, видимых снаружи.
Другим типичным вариантом использования расширенного RTTI является Inversion of control и Инъекции зависимостей.
Например, Delphi Spring Framework Delphi требует Delphi 2010 (или выше) из-за его тяжелой использование RTTI, которое можно использовать для впрыска конструктора.