C#动态代码评估、评估、回复
有人知道是否有一种方法可以在运行时评估c代码吗。 我想允许用户输入DateTime.Now.AddDays(1)或类似的字符串,然后计算字符串以获得结果 我想知道是否可以访问emmediate windows功能,因为它似乎会动态计算输入的每一行 我发现VB有一个来自VBA*.dll的未记录的EbExecuteLine()API函数,我想知道是否有与c#等价的东西 我还发现了一个定制工具(它以前在kamimucode.com上,但作者已将其移动到GitHub),似乎可以实现这一点,但我更喜欢作为.NET一部分提供的工具C#动态代码评估、评估、回复,c#,dynamic,eval,read-eval-print-loop,C#,Dynamic,Eval,Read Eval Print Loop,有人知道是否有一种方法可以在运行时评估c代码吗。 我想允许用户输入DateTime.Now.AddDays(1)或类似的字符串,然后计算字符串以获得结果 我想知道是否可以访问emmediate windows功能,因为它似乎会动态计算输入的每一行 我发现VB有一个来自VBA*.dll的未记录的EbExecuteLine()API函数,我想知道是否有与c#等价的东西 我还发现了一个定制工具(它以前在kamimucode.com上,但作者已将其移动到GitHub),似乎可以实现这一点,但我更喜欢作为
谢谢,Mono有交互式命令行(csharp.exe) 您可以查看它的源代码,看看它到底是如何工作的,这很神奇: 微软的C#编译器还没有编译器即服务(应该随C#5.0一起提供)
您可以使用,也可以使用编写自己的服务。虽然速度不快,但您可以动态编译代码,请参见我的
拥有程序集并知道类型名称后,就可以使用反射构造编译类的实例并执行方法。正如您可能已经看到的那样,没有用于在运行时计算C代码的内置方法。这是您提到的自定义工具存在的主要原因 我还有一个C#eval程序,可以评估C#代码。它提供了在运行时评估C#代码的功能,并支持许多C#语句。事实上,这段代码在任何.NET项目中都是可用的,但是,它仅限于使用C#语法。查看我的网站,了解更多详细信息。O2平台使用的API具有真正强大的反射API,允许您执行代码片段 例如:
"return DateTime.Now.ToLongTimeString();".executeCodeSnippet();
会回来的
5:01:22 AM
请注意,“..”.executeCodeSnippet();实际上可以执行任何有效的C#代码片段(因此它非常强大)
如果你想控制你的用户可以执行什么,我可以使用AST树来限制他们可以访问的C#特性
还可以看看微软的,正如你在相关问题上看到的那样,它非常强大。。。