3

我有一个接受表名的存储过程,然后它读取表结构并以字符串中的类定义的形式返回表结构。

例如:

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

是否可以从包含类定义的字符串创建一个类/类型?例如:-

Type type = GenerateType(myString);

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

4

1 回答 1

7

您可以使用 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);
于 2018-01-02T15:16:55.623 回答