Partilhar via


CodeDomProvider.GenerateCodeFromCompileUnit Método

Definição

Gera código para a unidade de compilação CodeDOM (Modelo de Objeto do Documento de Código) especificada e envia-a para o text writer especificado, usando as opções 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

Um CodeCompileUnit para o qual gerar código.

writer
TextWriter

O TextWriter para o qual o código de saída é enviado.

options
CodeGeneratorOptions

Um CodeGeneratorOptions que indica as opções a serem usadas para gerar código.

Exceções

Nem esse método nem o método CreateGenerator() são substituídos em uma classe derivada.

Exemplos

O exemplo de código a seguir mostra o uso do GenerateCodeFromCompileUnit método para gerar código para um aplicativo "Olá, Mundo" de um CodeCompileUnit. Este exemplo faz parte de um exemplo maior fornecido para a CodeDomProvider classe .

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

Comentários

Observação

No .NET Framework versões 1.0 e 1.1, esse método é fornecido pela ICodeGenerator implementação retornada pelo CreateGenerator método do provedor. Na versão 2.0, esse método pode ser chamado diretamente no provedor de código, mesmo que não seja substituído pelo provedor de código. Se o provedor de código não substituir esse método, a ICodeGenerator implementação será chamada pela classe base.

Notas aos Herdeiros

Se você substituir esse método, não deverá chamar o método correspondente da classe base. O método de classe base cria um gerador na classe derivada usando o método obsoleto CreateGenerator() para compatibilidade com provedores pré-existentes que usam geradores de código. Em seguida, o método de classe base chama o método equivalente na ICodeGenerator implementação para executar essa função. Você receberá um NotImplementedException se chamar o método de classe base de um provedor de código que não usa um gerador de código.

Aplica-se a

Confira também