Partager via


CodeDomProvider.GenerateCodeFromCompileUnit Méthode

Définition

Génère du code pour l'unité de compilation CodeDOM (Code Document Object Model) spécifiée et l'envoie au writer de texte spécifié, à l'aide des options définies.

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ètres

compileUnit
CodeCompileUnit

CodeCompileUnit pour lequel du code doit être généré.

writer
TextWriter

TextWriter auquel le code de sortie est envoyé.

options
CodeGeneratorOptions

CodeGeneratorOptions qui indique les options à utiliser pour générer le code.

Exceptions

Ni cette méthode ni la méthode CreateGenerator() ne sont substituées dans une classe dérivée.

Exemples

L’exemple de code suivant montre l’utilisation de la méthode pour générer du GenerateCodeFromCompileUnit code pour une application « Hello World » à partir d’un CodeCompileUnit. Cet exemple fait partie d’un exemple plus grand fourni pour 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

Remarques

Notes

Dans les versions 1.0 et 1.1 du .NET Framework, cette méthode est fournie par l’implémentation ICodeGenerator retournée par la CreateGenerator méthode du fournisseur. Dans la version 2.0, cette méthode peut être appelée directement sur le fournisseur de code même si elle n’est pas remplacée par le fournisseur de code. Si le fournisseur de code ne remplace pas cette méthode, l’implémentation ICodeGenerator est appelée par la classe de base.

Notes pour les héritiers

Si vous remplacez cette méthode, vous ne devez pas appeler la méthode correspondante de la classe de base. La méthode de classe de base crée un générateur dans la classe dérivée à l’aide de la méthode obsolète CreateGenerator() pour la compatibilité avec les fournisseurs préexistants qui utilisent des générateurs de code. La méthode de classe de base appelle ensuite la méthode équivalente dans l’implémentation ICodeGenerator pour effectuer cette fonction. Vous obtiendrez un NotImplementedException si vous appelez la méthode de classe de base à partir d’un fournisseur de code qui n’utilise pas de générateur de code.

S’applique à

Voir aussi