CodeDomProvider.GenerateCodeFromCompileUnit Metodo
Definizione
Importante
Alcune informazioni sono relative alla release non definitiva del prodotto, che potrebbe subire modifiche significative prima della release definitiva. Microsoft non riconosce alcuna garanzia, espressa o implicita, in merito alle informazioni qui fornite.
Genera il codice per l'unità di compilazione CodeDOM (Code Document Object Model) specificata e lo invia al writer di testo indicato utilizzando le opzioni selezionate.
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)
Parametri
- compileUnit
- CodeCompileUnit
Oggetto CodeCompileUnit per il quale deve essere generato il codice.
- writer
- TextWriter
Oggetto TextWriter a cui viene inviato il codice di output.
- options
- CodeGeneratorOptions
Oggetto CodeGeneratorOptions che indica le opzioni da utilizzare per la generazione del codice.
Eccezioni
Né questo metodo né il metodo CreateGenerator() vengono sottoposti a override in una classe derivata.
Esempio
Nell'esempio di codice seguente viene illustrato l'uso GenerateCodeFromCompileUnit del metodo per generare codice per un'applicazione "Hello World" da un CodeCompileUnitoggetto . Questo esempio fa parte di un esempio più grande fornito per la CodeDomProvider classe.
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
Commenti
Nota
In .NET Framework versioni 1.0 e 1.1, questo metodo viene fornito dall'implementazione ICodeGenerator restituita dal CreateGenerator metodo del provider. Nella versione 2.0 questo metodo può essere chiamato direttamente nel provider di codice anche se non viene sottoposto a override dal provider di codice. Se il provider di codice non esegue l'override di questo metodo, l'implementazione ICodeGenerator viene chiamata dalla classe base.
Note per gli eredi
Se si esegue l'override di questo metodo, non è necessario chiamare il metodo corrispondente della classe base. Il metodo di classe base crea un generatore nella classe derivata usando il metodo obsoleto CreateGenerator() per la compatibilità con provider preesistenti che usano generatori di codice. Il metodo di classe base chiama quindi il metodo equivalente nell'implementazione ICodeGenerator per eseguire questa funzione. Si otterrà un NotImplementedException se si chiama il metodo di classe base da un provider di codice che non usa un generatore di codice.