是否可以从字符串变量执行代码,例如:
string mystring = "Console.WriteLine(\"Hi\");"; 是否可以执行 mystring 的内容(打印“Hi”)?
user522860
问问题
1316 次
4 回答
4
可以使用 System.Reflection.Emit 或 System.CodeDom 命名空间,但这并不是一个好主意,因为没有机制来控制哪些命名空间是允许的,哪些是不允许的。用户可以构建一个字符串来擦除您的硬盘驱动器。
类似 eval() 的函数是巨大的安全漏洞,应该避免。首选的替代方案是DSL(领域特定语言)。
于 2011-02-01T05:08:22.253 回答
1
是的。在运行时启动编译器并传入您的代码。它会吐出可执行代码。查看System.CodeDom
命名空间,尤其是System.CodeDom.Compiler
.
于 2011-02-01T05:07:30.063 回答
1
使用代码 DOM
于 2011-02-01T05:07:32.963 回答
1
于 2011-02-01T05:08:44.270 回答