CodeDomProvider.GenerateCodeFromCompileUnit Método
Definição
Importante
Algumas informações dizem respeito a um produto pré-lançado que pode ser substancialmente modificado antes de ser lançado. A Microsoft não faz garantias, de forma expressa ou implícita, em relação à informação aqui apresentada.
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.