CodeDomProvider.GenerateCodeFromCompileUnit Methode

Definition

Generiert Code für die angegebene CodeDOM-Kompilierungseinheit (Code Document Object Model) und sendet diesen mit den angegebenen Optionen an den angegebenen Textwriter.

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, an den der Ausgabecode gesendet wird.

options
CodeGeneratorOptions

Ein CodeGeneratorOptions, das die Optionen angibt, die für das Generieren von Code verwendet werden sollen.

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 einem CodeCompileUnit. Dieses Beispiel ist Teil eines größeren Beispiels, das für die CodeDomProvider -Klasse bereitgestellt wird.

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

Hinweise

Hinweis

In den .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 auf dem Codeanbieter aufgerufen werden, auch wenn sie nicht vom Codeanbieter überschrieben wird. Wenn der Codeanbieter diese Methode nicht überschreibt, wird die ICodeGenerator Implementierung von der Basisklasse aufgerufen.

Hinweise für Vererber

Wenn Sie diese Methode überschreiben, dürfen Sie die entsprechende Methode der Basisklasse nicht aufrufen. Die Basisklassenmethode erstellt einen Generator in der abgeleiteten Klasse unter Verwendung 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 eine NotImplementedException , wenn Sie die Basisklassenmethode von einem Codeanbieter aufrufen, der keinen Codegenerator verwendet.

Gilt für:

Weitere Informationen