Итак, наша задача добавить класс.
using System;
using System.CodeDom;
using System.CodeDom.Compiler;
using Microsoft.CSharp;
using System.IO;
class MainClass
{
public static void Main(string[] args)
{
CodeCompileUnit compileunit = new CodeCompileUnit();
CodeNamespace Samples = new CodeNamespace("Samples");
CSharpCodeProvider cs = new CSharpCodeProvider();
CodeGeneratorOptions go = new CodeGeneratorOptions();
ICodeGenerator ic= cs.CreateGenerator();
CodeTypeDeclaration Class1 = new CodeTypeDeclaration("MyClass1");
CodeTypeDeclaration Class2 = new CodeTypeDeclaration("MyClass2");
Samples.Types.Add(Class1);
Samples.Types.Add(Class2);
Stream ss=File.OpenWrite("d:\\test.txt");
StreamWriter s = new StreamWriter(ss);
compileunit.Namespaces.Add(Samples);
ic.GenerateCodeFromCompileUnit(compileunit,s,go);
s.Close();
ss.Close();
}
}
Класс CodeTypeDeclaration используется для объявления новых структур или классов. После этого мы можем добавить объект к нашему рабочему пространству Samples.Types.Add.
Вот такой будет результат.
//------------------------------------------------------------------------------ //// This code was generated by a tool. // Runtime Version: 1.0.2914.16 // // Changes to this file may cause incorrect behavior and will be lost if // the code is regenerated. // //------------------------------------------------------------------------------ namespace Samples { public class MyClass1 { } public class MyClass2 { } }