rai*_*syn 5 c# code-generation
是否可以在运行时更改方法体?
class Person
{
public void DoSth()
{ Console.WriteLine("Hello!"); }
}
Run Code Online (Sandbox Code Playgroud)
我想有一个简单的输入字段(如文本框),我可以在运行时编写方法体源代码.
文本框可能包含以下数据:
for (int i = 0; i < 5; i++)
Console.WriteLine(i);
Run Code Online (Sandbox Code Playgroud)
应该在什么时候进行
new Person().DoSth()
Run Code Online (Sandbox Code Playgroud)
叫做.
在C#(使用Reflection)中是否可以(或如何)?
感谢您的帮助.
编辑:
如果上述情况不可能,是否可以在运行时创建一个新方法并调用它?
Reflection.Emit是在运行时生成IL的一种方法... http://msdn.microsoft.com/en-us/library/8ffc3x75(v=VS.90).aspx
轻量级代码生成是另一个... http://blogs.msdn.com/b/joelpob/archive/2004/03/31/105282.aspx
但是,既不采用C#也要编译它.为此,您很可能需要调用C#编译器.
你的用例是什么(你为什么要这样做)?在您的应用领域中运行代码存在安全注意事项,因此您需要弄清楚如何处理此问题.