对于一个小小的夜间项目,我想编写一个可以在.NET应用程序中使用的验证组件,对对象,输入参数和后置条件进行常规和繁琐的验证。
我的第一个想法是将所有这些验证设置逻辑转储到XML配置文件中,并为希望在代码中拥有它的人们提供一个液体界面。
因为我想提供实际可用的东西,所以我想提供一种专门的DSL(领域特定语言)。问题是我应该使用什么工具来做这件事?
我考虑过使用正则表达式手动解析它。但我个人希望有更多可用的东西。
那么你会建议什么?
答案 0 :(得分:5)
听起来你在谈论实施one of .Net 4.0's features, code contracts。
所以我猜我推荐的工具是VS.Net 2010。
答案 1 :(得分:1)
如果您正在专注于DSL,请查看ANTLR项目。我们过去在我公司很成功地使用过它。
答案 2 :(得分:0)
DSl的问题在于它们很少孤立地有效。为了用于编写真实软件,您确实需要能够将DSL嵌入到宿主语言中。比较,例如,Linq的工作方式与直接的SQL。另一个很好的例子是VB中的XML文字特征。两者都允许您在通用PL中编写实际代码,并使用更简单的声明DSL代码进行编织。
结果比独立的SQL或简单的XML编辑器更强大。
不幸的是,不幸的是,C#和VB都没有提供任何元编程功能,因此对于主流.net开发者来说,唯一的方法是构建自己的语言。如果您只是为了好玩而做的事情,那么您可以修改单声道C#编译器,将您感兴趣的功能添加到该语言中。另一种选择可能是尝试红宝石。它具有灵活的语法,让你可以逃脱很多疯狂。然而,Personaly,我更喜欢被黑客攻击的C#方法。答案 3 :(得分:0)
可能想查看Building Domain Specific Languages in Boo(Boo是一种CLR语言,概念应该延续到C#)。示例项目是Simple State Machine。
答案 4 :(得分:0)
答案 5 :(得分:0)
为什么要走这么远?开始使用泛型和流畅的界面。从简单开始,通过一些生产工作。如果摩擦力太大而处理流畅的界面,那么请使用DSL。
答案 6 :(得分:0)
您可以尝试使用Visual Studio的DSL工具。
答案 7 :(得分:0)