从包含源代码的字符串创建Class对象

时间:2014-11-24 22:32:51

标签: c# codedom csharpcodeprovider runtime-compilation compileassemblyfromsource

我正在创建一个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属性,并且需要从类中获取命名空间。

所以我想创建每个类 - 源代码字符串的某种对象,这将使我能够实现我的目标。任何其他想法当然也是受欢迎的。

1 个答案:

答案 0 :(得分:0)

你想要的不是CSharpCodeProver,用于编译和加载动态代码。在您的情况下,我建议使用.Net Framework中的DLR(而不是CLR)。

或者您可以查看.NET-Compiler-Plattform

你尝试的东西不起作用。