CodeDomProvider.GenerateCodeFromCompileUnit Metódus
Definíció
Fontos
Egyes információk olyan, kiadás előtti termékekre vonatkoznak, amelyek a kiadásig még jelentősen módosulhatnak. A Microsoft nem vállal kifejezett vagy törvényi garanciát az itt megjelenő információért.
Létrehoz egy kódot a megadott Code Document Object Model (CodeDOM) fordítási egységhez, és elküldi a megadott szövegírónak a megadott beállításokkal.
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)
Paraméterek
- compileUnit
- CodeCompileUnit
A CodeCompileUnit , amelyhez kódot kell létrehozni.
- writer
- TextWriter
Az TextWriter a kód, amelyre a kimeneti kódot elküldi a rendszer.
- options
- CodeGeneratorOptions
A CodeGeneratorOptions kódgeneráló lehetőségeket jelzi.
Kivételek
Sem ez a módszer, sem a CreateGenerator() metódus nem felül van bírálva egy származtatott osztályban.
Példák
Az alábbi kódpéldában a GenerateCodeFromCompileUnit metódus használatával hozhat létre kódot egy "„Helló világ!” alkalmazás" alkalmazáshoz egy CodeCompileUnit. Ez a példa egy nagyobb, az CodeDomProvider osztályhoz tartozó példa része.
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
Megjegyzések
Note
A .NET Keretrendszer 1.0-s és 1.1-s verzióiban ezt a módszert a ICodeGenerator implementáció biztosítja, amelyet a szolgáltató CreateGenerator metódusa ad vissza. A 2.0-s verzióban ez a metódus akkor is meghívható közvetlenül a kódszolgáltatón, ha a kódszolgáltató nem bírálja felül. Ha a kódszolgáltató nem bírálja felül ezt a módszert, az ICodeGenerator implementációt az alaposztály hívja meg.
Megjegyzések az öröklőkhöz
Ha felülbírálja ezt a metódust, nem szabad meghívnia az alaposztály megfelelő metódusát. Az alaposztály metódus létrehoz egy generátort a származtatott osztályban a kódgenerátorokat CreateGenerator() használó, már létező szolgáltatókkal való kompatibilitás érdekében. Az alaposztály metódus ezután meghívja az implementáció egyenértékű metódusát a ICodeGenerator függvény végrehajtásához. NotImplementedException Ha az alaposztály metódusát olyan kódszolgáltatótól hívja meg, amely nem használ kódgenerátort.