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 Code Document Object Model (CodeDOM) especificada y la envía al escritor de texto especificado mediante las opciones 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
que CodeGeneratorOptions indica las opciones que se van a usar para generar código.
Excepciones
Ni este método ni el CreateGenerator() método se invalidan en una clase derivada.
Ejemplos
En el ejemplo de código siguiente se muestra el uso del método GenerateCodeFromCompileUnit para generar código para una aplicación de "Hola mundo" desde una CodeCompileUnit. Este ejemplo forma parte de un ejemplo más grande proporcionado para la CodeDomProvider clase .
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
Note
En .NET Framework versiones 1.0 y 1.1, este método lo proporciona la implementación de ICodeGenerator que devuelve el método CreateGenerator 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 de 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.