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 einer CodeCompileUnit. In diesem Beispiel wird ein größeres Beispiel für die CodeDomProvider Klasse bereitgestellt.

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 Implementierung bereitgestellt, die ICodeGenerator 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 vom Codeanbieter nicht außer Kraft gesetzt wird. Wenn der Codeanbieter diese Methode nicht außer Kraft setzt, wird die ICodeGenerator Implementierung von der Basisklasse aufgerufen.

Hinweise für Vererber

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

Gilt für

Siehe auch