質問はおそらく複合的なものです。拡張させてください:
- .NET オブジェクトの public bool プロパティに基づいて AND/OR ベースのルールを作成するためのデザイナー(スタブ/フレームワーク/メタデザイナー)は存在しますか? 任意の DSL/Boo/... 出力として保存されます。
- DSL 出力を C#式にコンパイルすることは可能ですか?
私たちの主な問題は、ドキュメントとコードの間のギャップです。私たちの製品は何百ものユーザー定義ルールに基づいており、変更要求をスピードアップしたいと考えています。
シンプルなデザイナーをユーザーに提供し、出力を取得できれば、それを C#/IL コードに変換/コンパイルした後、変更要求サイクルを迅速に行うことができます。
私たちの問題は特定の問題であることはわかっていますが、「壁の中のレンガ」は大歓迎です!
例:
AC# クラス、対象:
public class TestA
{
public bool B {...}
public bool C {...}
}
デザイナーでは、作成できるはずです
- 任意のタイプのグラフィック デザイナー (つまり、パブリック プロパティを選択するためのドロップダウン)
DSL での出力:
If TestA.B AND TestA.C Then Return True;
C# での出力:
if (testA.B && testA.C) { return true; }
更新 #1
静的型の .NET クラスの使用をサポートする DSL 言語があればうれしいです。つまり、ユーザーがコードを確認できる場合 (例では「Output in DSL」 )、デザイナーは必要ありません。
アップデート #2
ティップをもとに表情木を見つめる。数日後、私は DLinq に出くわしました - 私は DLinq の大ファンではありませんでしたが、この場合、問題のドメインに非常によく適合します。
- 構文解析が容易(A > 2 AND B < 4) OR C = 5を式ツリーに
- そんな表現がしやすい
- シリアル化/逆シリアル化が非常に簡単
- FlowLayoutPanel に基づく GUI は「式ビルダー」として正常に動作します