CodeDomProvider.GenerateCodeFromCompileUnit Metode
Definisi
Penting
Beberapa informasi terkait produk prarilis yang dapat diubah secara signifikan sebelum dirilis. Microsoft tidak memberikan jaminan, tersirat maupun tersurat, sehubungan dengan informasi yang diberikan di sini.
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.