C#动态代码评估、评估、回复

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),似乎可以实现这一点,但我更喜欢作为

有人知道是否有一种方法可以在运行时评估c代码吗。 我想允许用户输入DateTime.Now.AddDays(1)或类似的字符串,然后计算字符串以获得结果

我想知道是否可以访问emmediate windows功能,因为它似乎会动态计算输入的每一行

我发现VB有一个来自VBA*.dll的未记录的EbExecuteLine()API函数,我想知道是否有与c#等价的东西

我还发现了一个定制工具(它以前在kamimucode.com上,但作者已将其移动到GitHub),似乎可以实现这一点,但我更喜欢作为.NET一部分提供的工具


谢谢,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#特性

还可以看看微软的,正如你在

相关问题上看到的那样,它非常强大。。。