c# - 是否可以在 C# 中的运行时创建/执行代码?

标签 c# .net runtime

我知道你可以 dynamically create a .NET assembly using Emit, System.Reflection and manually created IL code as shown here .

但我想知道是否可以在正在运行的应用程序中实时动态创建和执行 C# 代码块。感谢您的任何意见或想法。

编辑: 据我了解,CodeDOM 允许您将 C# 代码编译成 EXE 文件,而不是“仅仅”执行它。这里有一些背景信息以及为什么(据我所知)这对我来说不是最佳选择。我正在创建一个应用程序,它必须执行很多这样动态创建的代码 [为了记录 - 它用于学术研究,而不是真实世界的应用程序,因此这是不可避免的]。因此,创建/执行数千个动态创建的 EXE 并不是很高效。其次 - 所有动态代码片段都会返回一些难以从单独运行的 EXE 中读取的数据。如果我遗漏了什么,请告诉我。

对于 DynamicMethod 方法,Jon Skeet 指出,如果有一种更简单的方法来编写代码本身而不是低级 IL 代码,那么一切都会像魅力一样工作。

换句话说(非常严厉地说)我需要这样的东西:

string x = "_some c# code here_";
var result = Exec(x);

最佳答案

绝对 - 这正是我为 Snippy 所做的,例如,对于深度 C#。您可以下载source code这里 - 它使用 CSharpCodeProvider .

还有可能构建表达式树,然后使用 DynamicMethod 将它们编译成委托(delegate)。 ,或 .NET 4 中的 DLR……各种各样的东西。

关于c# - 是否可以在 C# 中的运行时创建/执行代码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5718517/

相关文章:

c# - 模拟新的 Microsoft Entity Framework Identity UserManager 和 RoleManager

c# - 是否有一种简单的方法来为 ScrollableControl.ScrollControlIntoView 方法设置动画?

.net - 如何使工具栏图标根据 dpi 缩放而不模糊?

c - 动态函数调用

java - 算法运行时间

c# - 如何解码可移植类库 (PCL) 中的 URL?

c# - json.net 在 77kb json 字符串上的性能

objective-c - 此类与键错误的键值编码不兼容

c# - 使用 [Flags] 属性定义 C# 枚举的多种方法?

.net - 使用自定义 WinForms 控件,我可以更改嵌套控件停靠在其中的矩形吗?