CodeDomProvider.GenerateCodeFromCompileUnit Método
Definición
Importante
Parte de la información hace referencia a la versión preliminar del producto, que puede haberse modificado sustancialmente antes de lanzar la versión definitiva. Microsoft no otorga ninguna garantía, explícita o implícita, con respecto a la información proporcionada aquí.
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.