RequiresProvidesDirectiveProcessor.GeneratePostInitializationCode, méthode
En cas de substitution dans une classe dérivée, ajoute du code au code d'initialisation de la classe de transformation générée. Ce code est ajouté après l'initialisation de la classe de base.
Espace de noms : Microsoft.VisualStudio.TextTemplating
Assembly : Microsoft.VisualStudio.TextTemplating.12.0 (dans Microsoft.VisualStudio.TextTemplating.12.0.dll)
Syntaxe
'Déclaration
Protected MustOverride Sub GeneratePostInitializationCode ( _
directiveName As String, _
codeBuffer As StringBuilder, _
languageProvider As CodeDomProvider, _
requiresArguments As IDictionary(Of String, String), _
providesArguments As IDictionary(Of String, String) _
)
protected abstract void GeneratePostInitializationCode(
string directiveName,
StringBuilder codeBuffer,
CodeDomProvider languageProvider,
IDictionary<string, string> requiresArguments,
IDictionary<string, string> providesArguments
)
protected:
virtual void GeneratePostInitializationCode(
String^ directiveName,
StringBuilder^ codeBuffer,
CodeDomProvider^ languageProvider,
IDictionary<String^, String^>^ requiresArguments,
IDictionary<String^, String^>^ providesArguments
) abstract
abstract GeneratePostInitializationCode :
directiveName:string *
codeBuffer:StringBuilder *
languageProvider:CodeDomProvider *
requiresArguments:IDictionary<string, string> *
providesArguments:IDictionary<string, string> -> unit
protected abstract function GeneratePostInitializationCode(
directiveName : String,
codeBuffer : StringBuilder,
languageProvider : CodeDomProvider,
requiresArguments : IDictionary<String, String>,
providesArguments : IDictionary<String, String>
)
Paramètres
directiveName
Type : StringNom de la directive.
codeBuffer
Type : StringBuilderMémoire tampon qui concatène le code que tous les processeurs de directive doivent exécuter après l'initialisation de la classe de base lors d'une série de traitement. Tout code devant être exécuté par ce processeur de directive pour cette directive une fois la classe de base initialisée doit être concaténé dans cette mémoire tampon.
languageProvider
Type : CodeDomProviderGénérateur de code qui crée le code à ajouter à codeBuffer.
requiresArguments
Type : IDictionary<String, String>Paramètres standard requis par le processeur de directive.
providesArguments
Type : IDictionary<String, String>Paramètres standard fournis par le processeur de directive.
Notes
Étant donné que GenerateTransformCode peut ajouter des méthodes à la classe de transformation générée, le code d'initialisation est souvent obligatoire pour appeler ces méthodes.
Cette méthode est appelée une fois pour chaque directive que ce processeur traite. Par conséquent, vous pouvez ajouter le code pour chaque directive à codeBuffer. GetPostInitializationCodeForProcessingRun retourne le contenu de codeBuffer après que toutes les directives ont été traitées.
Cette méthode est appelée par ProcessDirective.
Exemples
Cet exemple génère du code après que la classe de base a été initialisée. Cet exemple est extrait d'un exemple plus complet pour la classe RequiresProvidesDirectiveProcessor.
protected override void GeneratePostInitializationCode(string directiveName, StringBuilder codeBuffer, System.CodeDom.Compiler.CodeDomProvider languageProvider, IDictionary<string, string> requiresArguments, IDictionary<string, string> providesArguments)
{
if (StringComparer.InvariantCultureIgnoreCase.Compare(directiveName, DomDirectiveTag) == 0)
{
// Resolve the file name of the specified "requires" xml file
// This allows the xml file to be a path relative to the text template that is using the directive processor.
string xmlFile = this.Host.ResolvePath(requiresArguments[XmlFileRequiredParameterName]);
if (!File.Exists(xmlFile))
{
throw new FileNotFoundException("Unable to load " + XmlFileRequiredParameterName, xmlFile);
}
string fieldName = providesArguments[DomProvidedParameterName].ToLower(CultureInfo.InvariantCulture) + "Value";
// Write code to initialize the domValue field by loading the xml file.
// The property is named "Dom" by default but the template writer may have changed the name using a custom provides clause like 'provides="Dom=AnotherName"'
codeBuffer.Append(
"this." + fieldName + " = new XmlDocument();" +
"this." + fieldName + ".Load(@\"" + xmlFile + "\");");
}
}
Sécurité .NET Framework
- Confiance totale accordée à l'appelant immédiat. Ce membre ne peut pas être utilisé par du code d'un niveau de confiance partiel. Pour plus d'informations, voir Utilisation de bibliothèques à partir de code d'un niveau de confiance partiel.
Voir aussi
Référence
RequiresProvidesDirectiveProcessor Classe