部分クラスと部分メソッドを使用して、カスタム コードに影響を与えずにコードを再生成できるシステムを見てきました。「ルール エンジン」は、Visio 状態図から完全に生成されたものです。これは基本的に貧弱なワークフローですが、変更は非常に簡単です。Viso ダイアグラムは XML にエクスポートされ、powershell と T4 を使用して読み込まれ、クラスが生成されました。
上記の例は、外部 DSL のものです。IE は、アプリケーションが実行されるプログラミング言語の外部にあります。一方、プログラミング言語で実装および使用される内部 DSL を作成することもできます。
これとCode-Magazine のDSLS に関する以前の記事は非常に優れています。
上記のリンクでは、Neal Ford が流暢なインターフェイスを使用して C# で内部 DSL を作成する方法を示しています。
彼がまだ言及していないことの 1 つは、この属性 [EditorBrowsable(EditorBrowsableState.Never)] をメソッドに付けて、intellisense に表示されないようにすることができるということです。これは、DSL のユーザーからクラスの非 DSL メソッドを非表示にできることを意味し、流暢な API をより見つけやすくします。
TDD を使用した IoC コンテナーの作成に関するDaniel Cazzulinoによるこのビデオ シリーズで、流暢なインターフェイスがライブで作成されているのを見ることができます。
外部 DSLに関しては、考えられるコード生成を使用するのではなく、直接実行できる外部 DSL を作成できるという点で非常に強力なOslo (現時点では CTP)のオプションもあります。それはまったく DSL ではありません。