Bagikan melalui


CodeDomProvider.GenerateCodeFromCompileUnit Metode

Definisi

Menghasilkan kode untuk unit kompilasi Code Document Object Model (CodeDOM) yang ditentukan dan mengirimkannya ke penulis teks yang ditentukan, menggunakan opsi yang ditentukan.

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

yang CodeCompileUnit akan menghasilkan kode.

writer
TextWriter

tempat TextWriter kode output dikirim.

options
CodeGeneratorOptions

CodeGeneratorOptions yang menunjukkan opsi yang digunakan untuk menghasilkan kode.

Pengecualian

Metode ini maupun CreateGenerator() metode ini tidak ditimpa dalam kelas turunan.

Contoh

Contoh kode berikut menunjukkan penggunaan GenerateCodeFromCompileUnit metode untuk menghasilkan kode untuk aplikasi "Halo Dunia" dari CodeCompileUnit. Contoh ini adalah bagian dari contoh yang lebih besar yang disediakan untuk CodeDomProvider kelas .

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

Keterangan

Catatan

Dalam versi .NET Framework 1.0 dan 1.1, metode ini disediakan oleh ICodeGenerator implementasi yang dikembalikan oleh CreateGenerator metode penyedia. Dalam versi 2.0, metode ini dapat dipanggil langsung pada penyedia kode meskipun tidak ditimpa oleh penyedia kode. Jika penyedia kode tidak mengambil alih metode ini, ICodeGenerator implementasi dipanggil oleh kelas dasar.

Catatan Bagi Inheritor

Jika Anda mengambil alih metode ini, Anda tidak boleh memanggil metode yang sesuai dari kelas dasar. Metode kelas dasar membuat generator di kelas turunan menggunakan metode usang CreateGenerator() untuk kompatibilitas dengan penyedia yang sudah ada sebelumnya yang menggunakan generator kode. Metode kelas dasar kemudian memanggil metode yang setara dalam ICodeGenerator implementasi untuk melakukan fungsi ini. Anda akan mendapatkan NotImplementedException jika Anda memanggil metode kelas dasar dari penyedia kode yang tidak menggunakan generator kode.

Berlaku untuk

Lihat juga