Шаг 119 - Добавляем класс в пространство имен CODEDom.

Итак, наша задача добавить класс.

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 {
    }
}

Загрузить проект | Предыдущий Шаг | Следующий Шаг
Автор Каев Артем