CodeDomProvider.GenerateCodeFromCompileUnit Metoda

Definice

Vygeneruje kód pro zadanou kompilační jednotku codeDOM (CodeDOM) a odešle ho zadanému textovému zapisovači pomocí zadaných možností.

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)

Parametry

compileUnit
CodeCompileUnit

A CodeCompileUnit , pro který se má vygenerovat kód.

writer
TextWriter

Do TextWriter kterého se odešle výstupní kód.

options
CodeGeneratorOptions

A CodeGeneratorOptions , který označuje možnosti použití pro generování kódu.

Výjimky

Tato metoda ani CreateGenerator() metoda není přepsána v odvozené třídě.

Příklady

Následující příklad kódu ukazuje použití metody GenerateCodeFromCompileUnit k vygenerování kódu pro "Hello World" aplikace z CodeCompileUnit. Tento příklad je součástí většího příkladu poskytnutého CodeDomProvider pro třídu.

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

Poznámky

Note

V rozhraní .NET Framework verze 1.0 a 1.1 je tato metoda poskytována implementací ICodeGenerator vrácenou metodou CreateGenerator zprostředkovatele. Ve verzi 2.0 lze tuto metodu volat přímo na zprostředkovatele kódu, i když není přepsán poskytovatelem kódu. Pokud zprostředkovatel kódu tuto metodu nepřepíše, ICodeGenerator je implementace volána základní třídou.

Poznámky pro dědice

Pokud tuto metodu přepíšete, nesmíte volat odpovídající metodu základní třídy. Metoda základní třídy vytvoří generátor v odvozené třídě pomocí zastaralé CreateGenerator() metody pro kompatibilitu s existujícími zprostředkovateli, kteří používají generátory kódu. Metoda základní třídy pak volá ekvivalentní metodu v implementaci ICodeGenerator k provedení této funkce. Získáte NotImplementedException , pokud zavoláte metodu základní třídy od zprostředkovatele kódu, který nepoužívá generátor kódu.

Platí pro

Viz také