CodeDomProvider.GenerateCodeFromCompileUnit Método

Definição

Gera código para a unidade de compilação Code Document Object Model (CodeDOM) especificada e envia-o para o escritor de texto 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

A CodeCompileUnit para gerar código.

writer
TextWriter

Para onde TextWriter o código de saída é enviado.

options
CodeGeneratorOptions

A CodeGeneratorOptions que indica as opções a usar para gerar código.

Exceções

Nem este método nem o CreateGenerator() método são sobrepostos numa classe derivada.

Exemplos

O exemplo de código seguinte mostra a utilização do método GenerateCodeFromCompileUnit para gerar código para uma aplicação "Hello World" a partir de um CodeCompileUnit. Este exemplo faz parte de um exemplo mais amplo fornecido à CodeDomProvider turma.

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

Observações

Note

Nas versões 1.0 e 1.1 do Framework .NET, este método é fornecido pela implementação ICodeGenerator que é devolvida pelo método CreateGenerator do fornecedor. Na versão 2.0, este método pode ser chamado diretamente ao fornecedor de código mesmo que não seja sobreposto pelo fornecedor de código. Se o fornecedor de código não sobrescrever este método, a ICodeGenerator implementação é chamada pela classe base.

Notas para Herdeiros

Se sobrescreveres este método, não deves 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 fornecedores pré-existentes que utilizam geradores de código. O método de classe base chama então o método equivalente na ICodeGenerator implementação para executar esta função. Receberá um NotImplementedException se chamar o método de classe base de um fornecedor de código que não utilize um gerador de código.

Aplica-se a

Ver também