Método RequiresProvidesDirectiveProcessor.GeneratePostInitializationCode
Quando substituído em uma classe derivada, adicione o código para o código de inicialização para a classe gerada de transformação. Esse código é adicionado após a classe base é inicializada.
Namespace: Microsoft.VisualStudio.TextTemplating
Assembly: Microsoft.VisualStudio.TextTemplating.12.0 (em Microsoft.VisualStudio.TextTemplating.12.0.dll)
Sintaxe
'Declaração
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: StringO nome da diretiva.
codeBuffer
Tipo: StringBuilderO buffer que concatena o código que todos os processadores de diretiva devem executar após a classe base é inicializada durante a execução de processamento. Qualquer código que este processador diretivo deve executar para essa diretiva após a classe base é inicializada deve ser concatenado a este buffer.
languageProvider
Tipo: CodeDomProviderO gerador de código que cria o código para adicionar a codeBuffer.
requiresArguments
Tipo: IDictionary<String, String>Os parâmetros padrão que o processador de diretiva requer.
providesArguments
Tipo: IDictionary<String, String>Os parâmetros padrão que o processador de diretiva fornece.
Comentários
Porque o GenerateTransformCode pode adicionar métodos à transformação gerado classe, código de inicialização geralmente são necessários para chamar esses métodos.
Este método é chamado uma vez para cada diretiva que processa o processador. Portanto, você pode acrescentar o código para cada diretiva a codeBuffer. oGetPostInitializationCodeForProcessingRun retorna o conteúdo de codeBuffer as diretivas depois que foram processadas.
Este método é chamado por ProcessDirective.
Exemplos
Este exemplo gerencia o código após a classe base é inicializada. Este exemplo é parte de um exemplo maior para a classe de 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 + "\");");
}
}
Segurança do .NET Framework
- Confiança total para o chamador imediato. O membro não pode ser usado por código parcialmente confiável. Para obter mais informações, consulte Usando bibliotecas de código parcialmente confiável.
Consulte também
Referência
RequiresProvidesDirectiveProcessor Classe