CodeDomProvider.GenerateCodeFromCompileUnit Methode

Definition

Generiert Code für die angegebene Code Document Object Model (CodeDOM)-Kompilierungseinheit und sendet ihn mithilfe der angegebenen Optionen an den angegebenen Textschreiber.

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)

Parameter

compileUnit
CodeCompileUnit

Eine CodeCompileUnit , für die Code generiert werden soll.

writer
TextWriter

Der TextWriter Ausgabecode, an den der Ausgabecode gesendet wird.

options
CodeGeneratorOptions

A CodeGeneratorOptions that indicates the options to use for generating code.

Ausnahmen

Weder diese Methode noch die CreateGenerator() Methode wird in einer abgeleiteten Klasse überschrieben.

Beispiele

Das folgende Codebeispiel zeigt die Verwendung der GenerateCodeFromCompileUnit-Methode zum Generieren von Code für eine "Hallo Welt"-Anwendung aus einer CodeCompileUnit. Dieses Beispiel ist Teil eines größeren Beispiels, das für die CodeDomProvider Klasse bereitgestellt wird.

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

Hinweise

Note

In .NET Framework-Versionen 1.0 und 1.1 wird diese Methode von der ICodeGenerator-Implementierung bereitgestellt, die von der CreateGenerator-Methode des Anbieters zurückgegeben wird. In Version 2.0 kann diese Methode direkt für den Codeanbieter aufgerufen werden, auch wenn sie vom Codeanbieter nicht außer Kraft gesetzt wird. Wenn der Codeanbieter diese Methode nicht überschreibt, wird die ICodeGenerator Implementierung von der Basisklasse aufgerufen.

Hinweise für Vererber

Wenn Sie diese Methode außer Kraft setzen, dürfen Sie die entsprechende Methode der Basisklasse nicht aufrufen. Die Basisklassenmethode erstellt einen Generator in der abgeleiteten Klasse mithilfe der veralteten CreateGenerator() Methode zur Kompatibilität mit bereits vorhandenen Anbietern, die Codegeneratoren verwenden. Die Basisklassenmethode ruft dann die entsprechende Methode in der ICodeGenerator Implementierung auf, um diese Funktion auszuführen. Sie erhalten einen NotImplementedException Fall, wenn Sie die Basisklassenmethode von einem Codeanbieter aufrufen, der keinen Codegenerator verwendet.

Gilt für:

Weitere Informationen