Прочитать на английском

Поделиться через


CodeDomProvider.GenerateCodeFromCompileUnit Метод

Определение

Создает код для указанной единицы компиляции объектной модели документов кода (CodeDOM) и направляет его указанному модулю записи текста, используя заданные параметры.

public virtual void GenerateCodeFromCompileUnit (System.CodeDom.CodeCompileUnit compileUnit, System.IO.TextWriter writer, System.CodeDom.Compiler.CodeGeneratorOptions options);

Параметры

compileUnit
CodeCompileUnit

Объект CodeCompileUnit, для которого создается код.

writer
TextWriter

Объект TextWriter, которому направляется выходной код.

options
CodeGeneratorOptions

Объект CodeGeneratorOptions, указывающий параметры для использования при создании кода.

Исключения

В производном классе нельзя переопределить ни этот метод, ни метод CreateGenerator().

Примеры

В следующем примере кода показано использование GenerateCodeFromCompileUnit метода для создания кода для приложения "Hello World" из CodeCompileUnit. Этот пример является частью более крупного примера, предоставленного CodeDomProvider для класса .

public static void GenerateCode(CodeDomProvider provider,
    CodeCompileUnit compileunit)
{
    // Build the source file name with the appropriate
    // language extension.
    String sourceFile;
    if (provider.FileExtension[0] == '.')
    {
        sourceFile = "TestGraph" + provider.FileExtension;
    }
    else
    {
        sourceFile = "TestGraph." + provider.FileExtension;
    }

    // Create an IndentedTextWriter, constructed with
    // a StreamWriter to the source file.
    IndentedTextWriter tw = new IndentedTextWriter(new StreamWriter(sourceFile, false), "    ");
    // Generate source code using the code generator.
    provider.GenerateCodeFromCompileUnit(compileunit, tw, new CodeGeneratorOptions());
    // Close the output file.
    tw.Close();
}

Комментарии

Примечание

В платформа .NET Framework версий 1.0 и 1.1 этот метод предоставляется реализациейICodeGenerator, возвращаемой CreateGenerator методом поставщика. В версии 2.0 этот метод можно вызывать непосредственно в поставщике кода, даже если он не переопределен поставщиком кода. Если поставщик кода не переопределяет этот метод, ICodeGenerator реализация вызывается базовым классом.

Примечания для тех, кто наследует этот метод

При переопределении этого метода не следует вызывать соответствующий метод базового класса. Метод базового класса создает генератор в производном классе, используя устаревший CreateGenerator() метод для обеспечения совместимости с уже существовающими поставщиками, которые используют генераторы кода. Затем метод базового класса вызывает эквивалентный метод в ICodeGenerator реализации для выполнения этой функции. Вы получите при NotImplementedException вызове метода базового класса из поставщика кода, который не использует генератор кода.

Применяется к

См. также раздел