从包含 class 定义的字符串创建动态 class

Creating dynamic class from a string containing the class definition

我有一个存储过程接受 table 名称,然后它读取 table 结构,returns 我读取 table 结构 class 定义在一个字符串中。

例如:

string myString = 
 "
   public class TableName
   { 
     public int Column1 { get; set; } 
   }
 "

是否可以从包含 class 定义的字符串创建 Class/Type? 例如:-

Type type = GenerateType(myString);

我必须将此类型变量传递给我的另一段代码,因此请帮助我从包含 class 定义的字符串创建 class/type。

您可以使用 CSharpCodeProvider 在运行时编译结果,然后使用 Activator - Class 从生成的代码创建对象。

// compile your piece of code to dll file
Microsoft.CSharp.CSharpCodeProvider cSharpCodeProvider = new Microsoft.CSharp.CSharpCodeProvider();
System.CodeDom.Compiler.CompilerParameters compilerParameters = new System.CodeDom.Compiler.CompilerParameters();
compilerParameters.GenerateInMemory = true;
compilerParameters.GenerateExecutable = false;
System.CodeDom.Compiler.CompilerResults cResult = cSharpCodeProvider.CompileAssemblyFromSource(compilerParameters, "using System; namespace Tables { 'put here your class definition' }");

// then load your dll file, get type and object from class
Assembly assembly = cResult.CompiledAssembly;
Type myTableType = assembly.GetType("Tables.Tablename");
var finalResult = Activator.CreateInstance(myTableType);