Sdílet prostřednictvím


RequiresProvidesDirectiveProcessor.GeneratePostInitializationCode – metoda

Při přepsání v odvozené třídě přidá kód kódem inicializace třídy vygenerované transformace.Tento kód je přidán po inicializaci základní třídy.

Obor názvů:  Microsoft.VisualStudio.TextTemplating
Sestavení:  Microsoft.VisualStudio.TextTemplating.12.0 (v Microsoft.VisualStudio.TextTemplating.12.0.dll)

Syntaxe

'Deklarace
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>
)

Parametry

  • directiveName
    Typ: String

    Název směrnice

  • codeBuffer
    Typ: StringBuilder

    Vyrovnávací paměti, který spojuje kód, který všechny procesory směrnice musí být spuštěn po základní třída je inicializována při zpracování, spustit.Jakýkoli kód, který spuštěním této směrnice procesoru po inicializaci základní třídy pro tuto směrnici by měly zřetězeny do této vyrovnávací paměti.

  • languageProvider
    Typ: CodeDomProvider

    Generátor kódu, který vytvoří kód, který chcete přidat do codeBuffer.

  • requiresArguments
    Typ: IDictionary<String, String>

    Standardní parametry, které vyžaduje procesor směrnice.

  • providesArguments
    Typ: IDictionary<String, String>

    Standardní parametry, které poskytuje procesor směrnice.

Poznámky

Vzhledem k tomu, GenerateTransformCode metody můžete přidat třídy vygenerované transformace, kód inicializace často vyžaduje volání těchto metod.

Tato metoda je volána jednou pro každou směrnici, která zpracovává tento procesor.Proto můžete přidat kód pro každou směrnici k codeBuffer.GetPostInitializationCodeForProcessingRunvrátí obsah codeBuffer po zpracování všech směrnic.

Tato metoda je volána ProcessDirective.

Příklady

Tento příklad generuje kód po inicializaci základní třídy.V tomto příkladu je součástí větší příklad RequiresProvidesDirectiveProcessor třídy.

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 + "\");");
}
}

Zabezpečení rozhraní .NET Framework

Viz také

Referenční dokumentace

RequiresProvidesDirectiveProcessor Třída

Microsoft.VisualStudio.TextTemplating – obor názvů

GeneratePreInitializationCode

GenerateTransformCode

ProcessDirective

GetPostInitializationCodeForProcessingRun