次の方法で共有


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

パラメーター

  • directiveName
    型: System.String
    ディレクティブの名前。
  • codeBuffer
    型: System.Text.StringBuilder
    処理実行中に基本クラスの初期化後にすべてのディレクティブ プロセッサが実行する必要があるコードを連結するバッファー。このディレクティブ プロセッサが基本クラスの初期化後にこのディレクティブに対して実行する必要のあるコードは、このバッファーに連結される必要があります。

解説

GenerateTransformCode は、生成された変換クラスにメソッドを追加できるため、多くの場合、初期化コードはこれらのメソッドを呼び出す必要があります。

このメソッドは、このプロセッサが処理するディレクティブごとに 1 回呼び出されます。 したがって、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