CodeDomProvider.GenerateCodeFromCompileUnit Methode

Definitie

Genereert code voor de opgegeven Code Document Object Model -compilatie-eenheid (CodeDOM) en verzendt deze naar de opgegeven tekstschrijver met behulp van de opgegeven opties.

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)

Parameters

compileUnit
CodeCompileUnit

Een CodeCompileUnit voor het genereren van code.

writer
TextWriter

De TextWriter uitvoercode waarnaar de uitvoercode wordt verzonden.

options
CodeGeneratorOptions

Een CodeGeneratorOptions die aangeeft welke opties moeten worden gebruikt voor het genereren van code.

Uitzonderingen

Deze methode en de CreateGenerator() methode worden niet overschreven in een afgeleide klasse.

Voorbeelden

In het volgende codevoorbeeld ziet u het gebruik van de methode GenerateCodeFromCompileUnit voor het genereren van code voor een Hallo wereld-toepassing op basis van een CodeCompileUnit. Dit voorbeeld maakt deel uit van een groter voorbeeld voor de CodeDomProvider klasse.

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

Opmerkingen

Note

In .NET Framework-versie 1.0 en 1.1 wordt deze methode geleverd door de ICodeGenerator-implementatie die wordt geretourneerd door de methode CreateGenerator van de provider. In versie 2.0 kan deze methode rechtstreeks op de codeprovider worden aangeroepen, zelfs als deze niet wordt overschreven door de codeprovider. Als de codeprovider deze methode niet overschrijft, wordt de ICodeGenerator implementatie aangeroepen door de basisklasse.

Notities voor overnemers

Als u deze methode overschrijft, moet u de bijbehorende methode van de basisklasse niet aanroepen. De methode basisklasse maakt een generator in de afgeleide klasse met behulp van de verouderde CreateGenerator() methode voor compatibiliteit met bestaande providers die gebruikmaken van codegeneratoren. Met de methode basisklasse wordt vervolgens de equivalente methode in de ICodeGenerator implementatie aangeroepen om deze functie uit te voeren. U krijgt een NotImplementedException als u de basisklassemethode aanroept van een codeprovider die geen codegenerator gebruikt.

Van toepassing op

Zie ook