JavaScript中有eval函数可以在运行时编译并执行代码,而new Function()方法可以在运行时根据输入的字符串生成方法。.NET没有内置这样的支持。
我之前写了个LambdaParser来做这样的事,因为基于表达式树,2008不支持代码块,只支持表达式,(最明显的区别是代码块是多个句子,表达式只有一个句子),现在2010的表达式树可以表达代码块了,理论上讲这个LambdaParser便可以支持代码块了,于是我把名字改成了TextToDelegate,因为这样就不限于lambda表达式,也可以支持匿名委托。
其实为.NET提供这样功能的模块已经有了,就是flee,它是用VB.NET写的,基于IL实现。前段时间看了它的Demo,感觉很酷,便把它剽窃过来也作为我的Demo,顺便加上了动画支持,不知是否侵权。可以在这里下载源码:TextToDelegate。
顺便,把这个Demo也移植成js版的放在这里供大家直接玩一下,点“生成图片”就明白了(需要支持canvas的浏览器,推荐chrome):
选择现有规则...
R:
G:
B:
如果觉得你自己写的式子效果不错,可以推荐给大家,我会把不错的集成到下拉框。
介绍一下: