结合篇

此文在于将前两篇文章的内容结合起来使用。

动态生成cs文件

查看文章 [小技巧] C# 使用 CodeDOM 动态创建类文件

动态编译

查看文章[小技巧]C# .net 动态编程 (1)

本文

结合使用

运行效果

image.png

源代码

放到main函数中

  1. #region 动态生成动态编译
  2. ClassCreator creator = new ClassCreator();
  3. creator.AddProperties("Name", typeof(string), true, true, "学生姓名");
  4. creator.AddProperties("Age", typeof(int), true, true, "学生年龄");
  5. creator.AddProperties("Sex", typeof(bool), true, true, "学生性别,true:男,false:女");
  6. creator.AddProperties("NO", typeof(string), true, true, "学生学号");
  7. creator.GenerateCode("Test.Model", "Student", System.Reflection.TypeAttributes.Public, AppDomain.CurrentDomain.BaseDirectory + "StudentClass.cs");
  8. CSharpCodeProvider provider = new CSharpCodeProvider();
  9. var result = provider.CompileAssemblyFromFile(new System.CodeDom.Compiler.CompilerParameters() { GenerateExecutable=false, GenerateInMemory=true}, AppDomain.CurrentDomain.BaseDirectory + "StudentClass.cs");
  10. var assembly = result.CompiledAssembly;
  11. var instance = assembly.CreateInstance("Test.Model.Student");
  12. instance.GetType().GetProperty("Name").SetValue(instance, "法外张三", null);
  13. Console.WriteLine(instance.GetType().GetProperty("Name").GetValue(instance, null));
  14. #endregion
  15. Console.ReadLine();

总结

动态编程第一期暂且如此,这一切仅仅是开始。