Sdílet prostřednictvím


CodeDomProvider.GenerateCodeFromCompileUnit Metoda

Definice

Vygeneruje kód pro zadanou jednotku kompilace CodeDOM (CodeDOM) a odešle jej zadanému zapisovači textu 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 je odeslán výstupní kód.

options
CodeGeneratorOptions

A CodeGeneratorOptions označující možnosti, které se mají použít 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í GenerateCodeFromCompileUnit metody ke generování kódu pro aplikaci "Hello World" z objektu CodeCompileUnit. Tento příklad je součástí většího příkladu poskytnutého CodeDomProvider pro třídu .

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

Poznámky

Poznámka

V rozhraní .NET Framework verze 1.0 a 1.1 je tato metoda poskytována implementací ICodeGenerator , která je vrácena metodou CreateGenerator zprostředkovatele. Ve verzi 2.0 lze tuto metodu volat přímo u zprostředkovatele kódu i v případě, že není přepsána poskytovatelem kódu. Pokud zprostředkovatel kódu nepřepíše tuto metodu 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é