Comments 23
В каждой достаточно сложной системе реализована с нуля половина LISP'а.
+8
спасибо, отличное описание
читал где-то, что первоначально, T4 использовался для внутренних нужд Microsoft. Но технология вышла очень удачной и ее открыли всем.
читал где-то, что первоначально, T4 использовался для внутренних нужд Microsoft. Но технология вышла очень удачной и ее открыли всем.
0
А есть ли шаблон для генерации бизнес-объектов? Ну чтобы автоматом генерировалась поддержака интерфейсов IEditableObject, IRevertibleChangeTracking и INotifyPropertyChanged? Написать универсальное решение без рефлексии не получится, а самому копипастить не хочется.
Я конечно однажды такой шаблон сам напишу, но всё ещё надеюсь найти уже готовый.
Я конечно однажды такой шаблон сам напишу, но всё ещё надеюсь найти уже готовый.
0
Есть генераторы на CodePlex для Linq
l2st4.codeplex.com/
l2st4.codeplex.com/
0
0
всегда интересовала тема кодогенерации. Во времена DOS когда я писал на FoxPro я для себя написал кодогенератор на основе описания структуры базы данных и был просто в восторге когда мне макрос сгенерировал код в сотню строк для поддержки переноса данных из одной базы данных с 4-мя связанными таблицами в другую. С использованием кодогенерации количество ошибок в моем проекте тогда резко упало и не удивительно, ведь мне достаточно было подправить макрос генератора, чтоб исправить ошибку во всех местах где он использовался.
Подобную описанной в топике систему я делал для Delphi подручными средствами, с использованием WSH и Javascript. Просто подключил написанный скрипт как внешний инструмент через меню, а он обрабатывал открытый в редакторе файл. Даже был случай когда скриптом сгенерировал код на основе Эксел-таблицы с большим количеством определений.
То что есть такой штатный инструмент — это просто здорово.
Подобную описанной в топике систему я делал для Delphi подручными средствами, с использованием WSH и Javascript. Просто подключил написанный скрипт как внешний инструмент через меню, а он обрабатывал открытый в редакторе файл. Даже был случай когда скриптом сгенерировал код на основе Эксел-таблицы с большим количеством определений.
То что есть такой штатный инструмент — это просто здорово.
+1
все таки, мне кажется, кодогенерация — не есть хорошо, а скорее недостаток business фреймворка и т.п., по идее ведь наследования должно хватать, неужели DevForce и StrataFrame тоже кодогенерят? XAF? да еще и в таких количествах как для CSLA, но используем, то что есть и зарекомендовало себя, как индикатор — dice.com
0
T4 — а название похоже дали, глядя на аналогиичный инструмент — M4
+1
а как M4 расшифровывается?
* T4 — это Text Template Transformation Toolkit
* T4 — это Text Template Transformation Toolkit
0
Макропроцессор m4, разработанный в 1977 году Брайаном Керниганом и Денисом Ритчи
Немного более подробно на английском
а это GNU M4
Немного более подробно на английском
а это GNU M4
+1
m4 — от слова macro: m и еще 4 буквы
0
Спасибо автору за обзор.
Просто был у меня проект, в котором у бизнес объектов было по десятку, а то и больше, свойств, да и самих объектов было не мало. В результате приходилось писать кучу строк однообразного кода. Знать бы в то время, что есть такая полезная вещь — жить было бы гораздо проще :)
Просто был у меня проект, в котором у бизнес объектов было по десятку, а то и больше, свойств, да и самих объектов было не мало. В результате приходилось писать кучу строк однообразного кода. Знать бы в то время, что есть такая полезная вещь — жить было бы гораздо проще :)
0
Довольно интересный обзор.
А чем принципиальным T4 отличается от R#? Только тем, что в T4 код генерируется уже при сохранении шаблона *.tt? Или T4 просто облегчает труд и все?
А чем принципиальным T4 отличается от R#? Только тем, что в T4 код генерируется уже при сохранении шаблона *.tt? Или T4 просто облегчает труд и все?
0
Интересный обзор. У MicroSoft мощная среда разработки что и говорить.
А для других языков кто небудь встречал кодогенераторы.
Например perl/python/php?
А для других языков кто небудь встречал кодогенераторы.
Например perl/python/php?
0
Уродливо же!
-1
BOOST_PP_FOREACH :-) рулит :)
0
Спасибо за обзор. Интересно было бы узнать, как сынтегрировать T4 в свой проект и генерировать файлы, когда заранее неизвестно их количество (прослойка к базе, например).
0
о!
скоро в сш появятся нормальные compile time шаблоны. здравствуйте, статический полиморфизм и с++ :)
а вообще, если честно, выглядит как попытка «обойти» либо архитектурные сложности, либо неправильный выбор языка.
Взрослый MDA+code generation выглядит на порядок красивше имхо.
скоро в сш появятся нормальные compile time шаблоны. здравствуйте, статический полиморфизм и с++ :)
а вообще, если честно, выглядит как попытка «обойти» либо архитектурные сложности, либо неправильный выбор языка.
Взрослый MDA+code generation выглядит на порядок красивше имхо.
0
Большое спасибо автору. Раньше я использовал для генерации кода собственные программки, которые запускались посредством MSBuild, а с T4 так извращаться не нужно.
0
Спасибо! Очень круто. Для этих нужд нами были были написаны две шарповые и одна перловая утилиты. Жаль, раньше не откопали.
0
глаза лопаются от всех этих бесконечных выводимых "\t\t\t\t".
Это не MS виноват, это в вашем шаблоне текст так забит, а генератор ничего не трогает. Если вы вставили несколько знаков табуляции, так и будет.
0
Sign up to leave a comment.
Text Template Transformation Toolkit (T4): генератор кода в Visual Studio