Шаг 118 - Что такое CODEDom

CodeDom - Generating and Compiling Source Code Dynamically in Multiple Languages. Вот так это звучит, в вообще возможность создания и компиляции разного исходного кода. То есть можно получить программу из некоторой структуры или автоматически перевести с одного языка на другой. Выглядит и звучи красиво. 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();
		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();
	}
}

Итак, в начале мы создали класс CodeCompileUnit в самом конце мы добавили к этому классу рабочее пространство compileunit.Namespaces.Add и использовали его для генерации сходного кода GenerateCodeFromCompileUnit Но для того, что бы сгенерировать файл нам нужен класс от ICodeGenerator. Мы его получили от CSharpCodeProvider, который умеет генерировать код на CSharp. Вот результат.

gif/118_1.gif (7728 b)


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