RequiresProvidesDirectiveProcessor.GeneratePostInitializationCode (Método)
Cuando se reemplaza en una clase derivada, agrega el código al código de inicialización para la clase de transformación generada.Este código se agrega después de inicializarse la clase base.
Espacio de nombres: Microsoft.VisualStudio.TextTemplating
Ensamblado: Microsoft.VisualStudio.TextTemplating.11.0 (en Microsoft.VisualStudio.TextTemplating.11.0.dll)
Sintaxis
'Declaración
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>
)
Parámetros
- directiveName
Tipo: System.String
Nombre de la directiva.
- codeBuffer
Tipo: System.Text.StringBuilder
El búfer que concatena el código que todos los procesadores de directivas deben ejecutar después de inicializarse la clase base durante una ejecución de procesamiento.Cualquier código que este procesador de directivas debe ejecutar para esta directiva después de inicializarse la clase base debe estar concatenado a este búfer.
- languageProvider
Tipo: System.CodeDom.Compiler.CodeDomProvider
El generador de código que crea el código que se va a agregar a codeBuffer.
- requiresArguments
Tipo: System.Collections.Generic.IDictionary<String, String>
Los parámetros estándar que requiere el procesador de directivas.
- providesArguments
Tipo: System.Collections.Generic.IDictionary<String, String>
Los parámetros estándar que proporciona el procesador de directivas.
Comentarios
Dado que GenerateTransformCode puede agregar los métodos a la clase de transformación generada, se suele requerir que el código de inicialización llame a esos métodos.
Se llama a este método una vez por cada directiva que este procesador procesa.Por consiguiente, puede anexar el código para cada directiva a codeBuffer.GetPostInitializationCodeForProcessingRun devuelve el contenido de codeBuffer una vez procesadas todas las directivas.
ProcessDirective llama a este método.
Ejemplos
En este ejemplo se genera código una vez inicializada la clase base.Este ejemplo forma parte de un ejemplo más extenso de la clase 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 + "\");");
}
}
Seguridad de .NET Framework
- Plena confianza para el llamador inmediato. Un código de confianza parcial no puede utilizar este miembro. Para obtener más información, vea Utilizar bibliotecas de código que no es de plena confianza.
Vea también
Referencia
RequiresProvidesDirectiveProcessor Clase