前面说了这么多,大家可能会觉得,好像没弄出个玩意儿来啊,对啊,所以,本文就来个可以弄出个玩意儿的东东。
说明一下,这是一个综合示例,分为两大部分,第一部分,生成代码,输出到控制台窗口中;第二部分,把这些代码动态进行编译,并生成一个WinForm应用程序,双击动态编译的程序可以运行起来,点击窗口上的按钮,会弹出一个对话框。
好,下面我把整个示例的代码贴出来,很简单,你就新建一个控制台应用程序就可以了。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.CodeDom;
using System.CodeDom.Compiler;
namespace Example
{
class Program
{
static void Main(string[] args)
{
CodeCompileUnit MyUnit = new CodeCompileUnit();
// 一个命名空间
CodeNamespace MyNamespace = new CodeNamespace("MyApp");
MyNamespace.Imports.Add(new CodeNamespaceImport("System"));
MyNamespace.Imports.Add(new CodeNamespaceImport("System.Windows.Forms"));
MyNamespace.Imports.Add(new CodeNamespaceImport("System.Drawing"));
MyNamespace.Imports.Add(new CodeNamespaceImport("System.Text"));
// 定义一个类
CodeTypeDeclaration MyClass = new CodeTypeDeclaration("MainForm");
MyClass.Attributes = MemberAttributes.Public;
MyClass.BaseTypes.Add(new CodeTypeReference("Form"));
CodeMemberField buttonField = new CodeMemberField("Button", "button1");
buttonField.InitExpression = new CodePrimitiveExpression(null);
MyClass.Members.Add(buttonField);
// 构造函数
CodeConstructor MyConstr = new CodeConstructor();
// 实例化Button类
My