Поделиться через


RequiresProvidesDirectiveProcessor.GeneratePostInitializationCode - метод

При переопределении в производном классе добавляет код в код инициализации для создаваемого класса преобразования. Этот код добавляется после инициализации базового класса.

Пространство имен:  Microsoft.VisualStudio.TextTemplating
Сборка:  Microsoft.VisualStudio.TextTemplating.10.0 (в Microsoft.VisualStudio.TextTemplating.10.0.dll)

Синтаксис

'Декларация
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>
)

Параметры

  • codeBuffer
    Тип: System.Text.StringBuilder
    Буфер, сцепляющий код, который все процессоры директив должны выполнять после инициализации базового класса во время обработки.Любой код, который должен выполняться процессором директив для данной директивы после инициализации базового класса, должен быть сцеплен с данным буфером.

Заметки

Поскольку GenerateTransformCode может добавлять методы к созданному классу преобразования, для вызова этих методов часто требуется код инициализации.

Этот метод вызывается для каждой директивы, обрабатываемой этим процессором. Таким образом можно добавить код для каждой директивы codeBuffer. GetPostInitializationCodeForProcessingRun возвращает содержимое codeBuffer после обработки всех директив.

Данный метод вызывается методом ProcessDirective.

Примеры

В этом примере показано создание кода после инициализации базового класса. Данный пример кода является частью большего примера для класса 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 + "\");");
}
}

Безопасность платформы .NET Framework

См. также

Ссылки

RequiresProvidesDirectiveProcessor Класс

Microsoft.VisualStudio.TextTemplating - пространство имен

GeneratePreInitializationCode

GenerateTransformCode

ProcessDirective

GetPostInitializationCodeForProcessingRun