CodeDomProvider.GenerateCodeFromCompileUnit Metodo

Definizione

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.

Si applica a

Vedi anche