Compartir a través de


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

  • 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.

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

Vea también

Referencia

RequiresProvidesDirectiveProcessor Clase

Microsoft.VisualStudio.TextTemplating (Espacio de nombres)

GeneratePreInitializationCode

GenerateTransformCode

ProcessDirective

GetPostInitializationCodeForProcessingRun