Здравствуйте, AndrewVK, Вы писали:
AVK>Ну если такими крупными блоками, то, наверное, детали. Есть еще, кстати, deploy time кодогенерация. Типичный пример — кодогенерация в ASP.NET.
Это пример — пре компайл-тайм-кодогенерации. Ты пишешь шаблон по которому перед компиляцией основного кода (код-бихайнд) генерируется логика связанная со страницей.
Деплой, не деплой раяли не играет. Принципы, возможности и ограничения все те же. Например, невозможность анализировать ничего за пределами базовой модели (АСП-страницы).
Собственно ограничения и вызваны стадией.
1. Стадия "до компиляции" не позволяет использовать знания о коде и рантайм-знания.
2. Стадия "во время компиляции" позволяет использовать знания о коде, но не знания полученные в рантайме.
3. Стадия "во время исполнения" позволяет использовать любые знания.
Проблемы подхода 1 — дикая ограниченность.
Проблемы подхода 2 — невозможность использовать рантайм-данных.
Проблемы подхода 3 — дикое неудобство при разработке и отладке.
В прочем, подходы 1 и 2 без проблем переносятся в рантайм (и деплойтайм).
Вот твой генератор классов по модели в ХМЛ — это подход 1 перенесенный в деплой-тайм.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.