CodeSmith を使用してそれを行う方法はわかりませんが、「ビルディング ブロック」アプローチを使用する方がよいでしょう。AtomWeaverは、"Atom " と呼ばれる小さなパーツでコード ジェネレーターを構築する方法を提供します。これらのアトムは、一緒に組み合わせることができるテンプレートです。
あなたの場合、cs_class という Atom テンプレートを作成します。
テンプレートの実行コードは次のようになります。
code([[
using System;
public class Hello3
{
public static void Main(string[] args)
{
{{code_blocks}}
}
}
]])
{{code_blocks}} マーカーに注目してください。別のテンプレートがそこにコードを配置します。
次に、cs_code_block Atom テンプレートを作成します。次のコードを使用します。
管理セクションの場合:
under("cs_class")
Exec セクションの場合:
cursor("code_blocks")
code([[
<put user code here>
]])
under() コマンドは、AtomWeaver でインタラクティブなモデリング環境を構築するのに役立ちます。これで、ユーザーは 1 つの cs_class Atom を使用してモデルを作成し、必要な数の cs_code_block Atom を追加できます。モデルを実行すると、目的のコードが生成されます。
AtomWeaver を使用すると、モデルとコード ジェネレーターを進化させることができます。数行から始めて、それを成長させて完全なジェネレーターを取得するのは簡単です。
これは、AtomWeaver で作成できるものを非常に単純化した例であることは承知していますが、これは、何が達成できるかを簡単に理解するためのものです。