C#执行变量代码

时间:2011-02-01 05:05:39

标签: c# variables dynamic execute

是否可以从字符串变量执行代码,例如:
   string mystring =“Console.WriteLine(\”Hi \“);”; 是否可以执行myst​​ring的内容(打印'Hi')?

4 个答案:

答案 0 :(得分:4)

可以使用System.Reflection.Emit或System.CodeDom命名空间,但这并不是一个好主意,因为没有机制来控制哪些命名空间是不允许的。用户可以构建一个擦除硬盘驱动器的字符串。

eval() - 类似的功能是巨大的安全漏洞,应该避免。首选的替代方案是DSL (domain specific language)

答案 1 :(得分:1)

是。在运行时启动编译器并传入代码。它将吐出可执行代码。请参阅System.CodeDom命名空间,尤其是System.CodeDom.Compiler

答案 2 :(得分:1)

使用Code DOM

答案 3 :(得分:1)

需要使用反射来获得类似的东西。 C#不是动态语言或解释语言,所以你不能开箱即用

http://www.codeproject.com/KB/dotnet/Expr.aspx

How can I evaluate C# code dynamically?