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 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.