问题可能是复合的,让我扩展它:
- 是否存在设计器(存根/框架/元设计器)来创建基于 .NET 对象公共 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 语言。我的意思是如果用户可以检查代码(示例中的“输出 DSL”),我们不需要设计器。
更新#2
根据tipp,我盯着表情树。几天后,我遇到了 DLinq——我从来都不是 DLinq 的忠实粉丝,但在这种情况下,我非常适合问题域。
- 易于将(A > 2 AND B < 4) OR C = 5解析为表达式树
- 轻松创建这样的表达式
- 非常容易序列化/反序列化
- 基于 FlowLayoutPanel 的 GUI 可以很好地作为“表达式生成器”