CodeDomProvider.GenerateCodeFromCompileUnit Metoda
Definice
Důležité
Některé informace platí pro předběžně vydaný produkt, který se může zásadně změnit, než ho výrobce nebo autor vydá. Microsoft neposkytuje žádné záruky, výslovné ani předpokládané, týkající se zde uváděných informací.
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.