的问题是可能复合,让我展开:DSL:从DSL规则到C#表达式
- 确实存在一个设计师(存根/框架/元设计师)来创建和/或基于基于.NET对象公共布尔属性的规则?保存为任何DSL/Boo/...输出。
- 是否有可能将DSL输出编译为C#表达式?
我们的主要问题是文档和代码之间的差距。我们的产品基于数百个用户定义的规则,我们希望加快变更请求。
如果我们能够给用户一个简单的设计器并获取输出,那么在翻译/编译成C#/ IL代码之后,我们有一个快速的更改请求周期。
我知道我们的问题是特定的,但任何“砖墙”都是值得欢迎的!
例:
C#类,主题:
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和B < 4)或C = 5到表达式树
- 轻松创建像
- 非常容易序列表达/基于
- GUI反序列化在FlowLayoutPanel工作正常,因为“表达式生成器”
我们的域对象测试器应用程序使用反射来填充公共属性并创建该对象的一个实例,所以这就好了。 表达式树听起来不错 - 你能给我一些关于DSL与ET的链接吗? 谢谢 – boj 2009-06-04 13:10:50