CodeDomProvider.GenerateCodeFromCompileUnit Methode
Definition
Wichtig
Einige Informationen beziehen sich auf Vorabversionen, die vor dem Release ggf. grundlegend überarbeitet werden. Microsoft übernimmt hinsichtlich der hier bereitgestellten Informationen keine Gewährleistungen, seien sie ausdrücklich oder konkludent.
Generiert Code für die angegebene CodeDOM-Kompilierungseinheit (Code Document Object Model) und sendet diesen mit den angegebenen Optionen an den angegebenen Textwriter.
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
Eine CodeCompileUnit, für die Code generiert werden soll.
- writer
- TextWriter
Der TextWriter, an den der Ausgabecode gesendet wird.
- options
- CodeGeneratorOptions
Ein CodeGeneratorOptions, das die Optionen angibt, die für das Generieren von Code verwendet werden sollen.
Ausnahmen
Weder diese Methode noch die CreateGenerator()-Methode wird in einer abgeleiteten Klasse überschrieben.
Beispiele
Das folgende Codebeispiel zeigt die Verwendung der GenerateCodeFromCompileUnit -Methode zum Generieren von Code für eine "Hallo Welt"-Anwendung aus einem CodeCompileUnit. Dieses Beispiel ist Teil eines größeren Beispiels, das für die CodeDomProvider -Klasse bereitgestellt wird.
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
Hinweise
Hinweis
In den .NET Framework Versionen 1.0 und 1.1 wird diese Methode von der ICodeGenerator Implementierung bereitgestellt, die von der CreateGenerator Methode des Anbieters zurückgegeben wird. In Version 2.0 kann diese Methode direkt auf dem Codeanbieter aufgerufen werden, auch wenn sie nicht vom Codeanbieter überschrieben wird. Wenn der Codeanbieter diese Methode nicht überschreibt, wird die ICodeGenerator Implementierung von der Basisklasse aufgerufen.
Hinweise für Vererber
Wenn Sie diese Methode überschreiben, dürfen Sie die entsprechende Methode der Basisklasse nicht aufrufen. Die Basisklassenmethode erstellt einen Generator in der abgeleiteten Klasse unter Verwendung der veralteten CreateGenerator() Methode zur Kompatibilität mit bereits vorhandenen Anbietern, die Codegeneratoren verwenden. Die Basisklassenmethode ruft dann die entsprechende Methode in der ICodeGenerator Implementierung auf, um diese Funktion auszuführen. Sie erhalten eine NotImplementedException , wenn Sie die Basisklassenmethode von einem Codeanbieter aufrufen, der keinen Codegenerator verwendet.