CodeDomProvider.GenerateCodeFromCompileUnit Método
Definição
Importante
Algumas informações se referem a produtos de pré-lançamento que podem ser substancialmente modificados antes do lançamento. A Microsoft não oferece garantias, expressas ou implícitas, das informações aqui fornecidas.
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.