我正在创建一个 C# 应用程序,其中代码在运行时编译,代码包含在字符串中(字符串从 ScintillaNET 控件获取其值,它只返回文本,带有代码的字符串按预期工作)。
我的问题是:有没有办法在运行时从这个源代码制作某种类对象?例如,字符串包含以下值:
namespace _Testing {
class Program {
static void Main(string[] args) {
Console.Title = "Program";
Console.WriteLine("If you can read this, it's all good!");
Console.ReadKey();
}
}
}
这段代码由我的CSharpCodeProvider编译器在运行时编译(使用CompileAssemblyFromSourceBatch - 因为我正在传递一个要编译的类数组)。但是,我希望能够在运行时设置编译器的 MainClass 属性,这需要将命名空间从类中取出。
所以我正在考虑为每个类源代码字符串创建某种对象,这将使我能够实现我的目标。当然,也欢迎任何其他想法。
你想要的不是CSharpCodeProver,用于编译和加载动态代码。在您的情况下,我建议使用.Net Framework中的DLR(而不是CLR)。
或者你可以看看.NET-编译器-平台
您尝试的操作将不起作用。