CodeDomProvider.GenerateCodeFromCompileUnit Méthode
Définition
Important
Certaines informations portent sur la préversion du produit qui est susceptible d’être en grande partie modifiée avant sa publication. Microsoft exclut toute garantie, expresse ou implicite, concernant les informations fournies ici.
Génère du code pour l’unité de compilation Code Document Object Model (CodeDOM) spécifiée et l’envoie à l’enregistreur de texte spécifié, à l’aide des options spécifiées.
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
Pour CodeCompileUnit lequel générer du code.
- writer
- TextWriter
TextWriter Auquel le code de sortie est envoyé.
- options
- CodeGeneratorOptions
Qui CodeGeneratorOptions indique les options à utiliser pour générer du code.
Exceptions
Ni cette méthode ni la CreateGenerator() méthode ne sont remplacées dans une classe dérivée.
Exemples
L’exemple de code suivant montre l’utilisation de la méthode GenerateCodeFromCompileUnit pour générer du code pour une application « Hello World » à partir d’un CodeCompileUnit. Cet exemple fait partie d’un exemple plus large fourni pour la CodeDomProvider classe.
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
Note
Dans .NET Framework versions 1.0 et 1.1, cette méthode est fournie par l’implémentation ICodeGenerator retournée par la méthode CreateGenerator 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.