CodeDomProvider.GenerateCodeFromCompileUnit Método

Definición

Genera código para la unidad de compilación CodeDOM (Code Document Object Model) especificada y lo envía al escritor de texto especificado utilizando las opciones igualmente especificadas.

public:
 virtual void GenerateCodeFromCompileUnit(System::CodeDom::CodeCompileUnit ^ compileUnit, System::IO::TextWriter ^ writer, System::CodeDom::Compiler::CodeGeneratorOptions ^ options);
public virtual void GenerateCodeFromCompileUnit (System.CodeDom.CodeCompileUnit compileUnit, System.IO.TextWriter writer, System.CodeDom.Compiler.CodeGeneratorOptions options);
abstract member GenerateCodeFromCompileUnit : System.CodeDom.CodeCompileUnit * System.IO.TextWriter * System.CodeDom.Compiler.CodeGeneratorOptions -> unit
override this.GenerateCodeFromCompileUnit : System.CodeDom.CodeCompileUnit * System.IO.TextWriter * System.CodeDom.Compiler.CodeGeneratorOptions -> unit
Public Overridable Sub GenerateCodeFromCompileUnit (compileUnit As CodeCompileUnit, writer As TextWriter, options As CodeGeneratorOptions)

Parámetros

compileUnit
CodeCompileUnit

CodeCompileUnit para el que se va a generar código.

writer
TextWriter

TextWriter al que se envía el código de salida.

options
CodeGeneratorOptions

CodeGeneratorOptions que indica las opciones que se van a utilizar para generar código.

Excepciones

Este método y el método CreateGenerator() no se reemplazan en una clase derivada.

Ejemplos

En el GenerateCodeFromCompileUnit ejemplo de código siguiente se muestra el uso del método para generar código para una aplicación de "Hola mundo" a partir de .CodeCompileUnit Este ejemplo forma parte de un ejemplo más grande proporcionado para la CodeDomProvider clase .

static void GenerateCode( CodeDomProvider^ provider, CodeCompileUnit^ compileunit )
{
    // Build the source file name with the appropriate
    // language extension.
    String^ sourceFile;
    if ( provider->FileExtension->StartsWith( "." ) )
    {
        sourceFile = String::Concat( "TestGraph", provider->FileExtension );
    }
    else
    {
        sourceFile = String::Concat( "TestGraph.", provider->FileExtension );
    }

    // Create an IndentedTextWriter, constructed with
    // a StreamWriter to the source file.
    IndentedTextWriter^ tw = gcnew IndentedTextWriter( gcnew StreamWriter( sourceFile,false ),"    " );

    // Generate source code using the code generator.
    provider->GenerateCodeFromCompileUnit( compileunit, tw, gcnew CodeGeneratorOptions );

    // Close the output file.
    tw->Close();
}
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();
}
Public Shared Sub GenerateCode(ByVal provider As CodeDomProvider, ByVal compileunit As CodeCompileUnit)

    ' Build the source file name with the appropriate
    ' language extension.
    Dim sourceFile As String
    If provider.FileExtension.StartsWith(".") Then
        sourceFile = "TestGraph" + provider.FileExtension
    Else
        sourceFile = "TestGraph." + provider.FileExtension
    End If

    ' Create an IndentedTextWriter, constructed with
    ' a StreamWriter to the source file.
    Dim tw As 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()
End Sub

Comentarios

Nota

En las versiones 1.0 y 1.1 de .NET Framework, este método lo proporciona la ICodeGenerator implementación devuelta por el CreateGenerator método del proveedor. En la versión 2.0, se puede llamar a este método directamente en el proveedor de código aunque el proveedor de código no lo invalide. Si el proveedor de código no invalida este método, la clase base llama a la ICodeGenerator implementación.

Notas a los desarrolladores de herederos

Si invalida este método, no debe llamar al método correspondiente de la clase base. El método de clase base crea un generador en la clase derivada mediante el método obsoleto CreateGenerator() para la compatibilidad con proveedores preexistentes que usan generadores de código. A continuación, el método de clase base llama al método equivalente en la ICodeGenerator implementación para realizar esta función. Obtendrá un NotImplementedException si llama al método de clase base desde un proveedor de código que no usa un generador de código.

Se aplica a

Consulte también