RequiresProvidesDirectiveProcessor.GeneratePostInitializationCode-Methode
Fügt beim Überschreiben in einer abgeleiteten Klasse dem Initialisierungscode für die generierte Transformationsklasse Code hinzu. Dieser Code wird hinzugefügt, nachdem die Basisklasse initialisiert wurde.
Namespace: Microsoft.VisualStudio.TextTemplating
Assembly: Microsoft.VisualStudio.TextTemplating.10.0 (in Microsoft.VisualStudio.TextTemplating.10.0.dll)
Syntax
'Declaration
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>
)
Parameter
- directiveName
Typ: System.String
Der Name der Direktive.
- codeBuffer
Typ: System.Text.StringBuilder
Der Puffer zur Verkettung des Codes, der von allen Direktivenprozessoren ausgeführt werden muss, nachdem die Basisklasse im Rahmen einer Verarbeitungsausführung initialisiert wird.Jeder Code, den dieser Direktivenprozessor für diese Direktive ausführen muss, nachdem die Basisklasse initialisiert wurde, sollte an diesen Puffer angefügt werden.
- languageProvider
Typ: System.CodeDom.Compiler.CodeDomProvider
Der Code-Generator, der den Code erzeugt, der codeBuffer hinzugefügt werden soll.
- requiresArguments
Typ: System.Collections.Generic.IDictionary<String, String>
Die Standardparameter, die vom Direktivenprozessor gefordert werden.
- providesArguments
Typ: System.Collections.Generic.IDictionary<String, String>
Die Standardparameter, die vom Direktivenprozessor bereitgestellt werden.
Hinweise
Da GenerateTransformCode der generierten Transformationsklasse Methoden hinzufügen kann, ist zum aufrufen dieser Methoden häufig Initialisierungscode erforderlich.
Diese Methode wird einmal für jede Direktive aufgerufen, die dieser Prozessor verarbeitet. Daher können Sie den Code für jede Direktive an codeBuffer anfügen. GetPostInitializationCodeForProcessingRun gibt den Inhalt von codeBuffer zurück, nachdem alle Direktiven verarbeitet wurden.
Diese Methode wird von ProcessDirective aufgerufen.
Beispiele
In diesem Beispiel wird Code generiert, nachdem die Basisklasse initialisiert wurde. Dieses Beispiel ist Teil eines umfangreicheren Beispiels für die RequiresProvidesDirectiveProcessor-Klasse.
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 + "\");");
}
}
.NET Framework-Sicherheit
- Volle Vertrauenswürdigkeit für den unmittelbaren Aufrufer. Dieser Member kann von nur teilweise vertrauenswürdigem Code nicht verwendet werden. Weitere Informationen finden Sie unter Verwenden von Bibliotheken aus teilweise vertrauenswürdigem Code.
Siehe auch
Referenz
RequiresProvidesDirectiveProcessor Klasse