但我想知道是否可以在正在运行的应用程序中实时动态创建和执行 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/