【发布时间】:2011-06-28 18:07:42
【问题描述】:
可能重复:
C# eval equivalent?
嗨 - 我想知道如何从我的应用程序中执行用户提供的包含 c# 代码的字符串。
例子:
string userProvidedString = "Console.Write("Hello World!")";
ExecuteCode(userProvidedString); // Should output Hello World!
【问题讨论】:
-
我知道我需要在执行之前清理代码,而且代码实际上不会来自最终用户,而是来自我将完全控制的客户端应用程序。在这个问题中,我只是简化了问题。
-
如果没有正确清理,执行任意用户提供的代码可能会非常危险。此外,作为一种编译语言,C# 并不是此类事情的最佳场所。如果您想要评估和执行一小部分代码,您通常可以编写自己的迷你解释器,它可以理解并完全满足您的需求。执行任意代码是另一回事 - 动态语言有 'eval()' 语句允许您执行此操作,但 C# 本身没有。
-
在实践中我能想到的唯一原因是开发某种编程或调试工具。从这个意义上说,它并不比使用 Visual Studio 更危险。
标签: c#