Показать сообщение отдельно
Старый 14.03.2017, 22:10   #1  
Logger is offline
Logger
Участник
Лучший по профессии 2015
Лучший по профессии 2014
 
3,875 / 3123 (112) ++++++++++
Регистрация: 12.10.2004
Адрес: Москва
Записей в блоге: 2
? Создание классов из кода.
Столкнулся с задачей генерации классов из кода.
Посмотрел примеры, в том числе в стандартном коде.

В связи с этим вопросы:
1. Во многих местах в коде стоит сперва Treenode.AOTcompile() а потом Treenode.AOTsave
(примеры
\Classes\AxGenerateAxBCClass\generate
\Classes\AxGenerateAxdClass\generate
\Classes\AifClassGeneratorBase\compileAndSave

Хотя по логике надо наоборот делать. Сперва сохранять, а потом компилировать.
И такие примеры тоже есть
\Classes\SysClassWizard\run
(Хотя в последнем примере в одном и том же методе и так и сяк делается. Интересно, зачем ? или это пляски с бубном чтобы нормально откомпилировались статические методы типа main ? - Они с первой компиляции могут не видеть run() pack() unpack() методы)

Так как же все-таки правильно делать ?

2. В коде встречаются вызовы AOTrefresh() и AOTRestore(true) после компиляции. Причем AOTrestore() - намного реже. В чем разница и зачем их вызывают ? прочистка кешей ? А что будет если пропустить их вызов ? Чем рискуем ?