Я не знаю, как это сделать с помощью CodeSmith, но вам лучше использовать подход "строительные блоки". AtomWeaver предлагает способ создания генератора кода из более мелких частей, называемых «атомами». Эти атомы - это шаблоны, которые вы можете комбинировать вместе.
В вашем случае я бы создал шаблон Atom с именем cs_class:
Исполнительный код шаблона будет:
code([[
using System;
public class Hello3
{
public static void Main(string[] args)
{
{{code_blocks}}
}
}
]])
Обратите внимание на маркер {{code_blocks}}. Другой шаблон поместит туда немного кода.
Затем создайте шаблон атома cs_code_block. Используйте этот код:
Для Административной секции:
under("cs_class")
Для исполнительного отдела:
cursor("code_blocks")
code([[
<put user code here>
]])
Команда under () помогает вам создать интерактивную среду моделирования в AtomWeaver. Теперь ваш пользователь может создать модель с одним атомом cs_class, а затем он может добавить столько атомов cs_code_block, сколько пожелает. Выполнение модели сгенерирует желаемый код.
AtomWeaver позволяет вам развивать ваши модели и генераторы кода. Легко начать с нескольких строк, а затем увеличить их, чтобы получить полные генераторы.
Я знаю, что это очень, очень упрощенный пример того, что вы можете построить с помощью AtomWeaver, но это просто, чтобы дать вам быстрое представление о том, чего вы можете достичь.