Итак, наша задача добавить класс.
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 { } }