结合篇
此文在于将前两篇文章的内容结合起来使用。
动态生成cs文件
查看文章 [小技巧] C# 使用 CodeDOM 动态创建类文件
动态编译
本文
结合使用
运行效果
源代码
放到main函数中
#region 动态生成动态编译
ClassCreator creator = new ClassCreator();
creator.AddProperties("Name", typeof(string), true, true, "学生姓名");
creator.AddProperties("Age", typeof(int), true, true, "学生年龄");
creator.AddProperties("Sex", typeof(bool), true, true, "学生性别,true:男,false:女");
creator.AddProperties("NO", typeof(string), true, true, "学生学号");
creator.GenerateCode("Test.Model", "Student", System.Reflection.TypeAttributes.Public, AppDomain.CurrentDomain.BaseDirectory + "StudentClass.cs");
CSharpCodeProvider provider = new CSharpCodeProvider();
var result = provider.CompileAssemblyFromFile(new System.CodeDom.Compiler.CompilerParameters() { GenerateExecutable=false, GenerateInMemory=true}, AppDomain.CurrentDomain.BaseDirectory + "StudentClass.cs");
var assembly = result.CompiledAssembly;
var instance = assembly.CreateInstance("Test.Model.Student");
instance.GetType().GetProperty("Name").SetValue(instance, "法外张三", null);
Console.WriteLine(instance.GetType().GetProperty("Name").GetValue(instance, null));
#endregion
Console.ReadLine();
总结
动态编程第一期暂且如此,这一切仅仅是开始。