次の方法で共有


RequiresProvidesDirectiveProcessor クラス

requires/provides のデザイン パターンを定義および実装するディレクティブ プロセッサの抽象基本クラス。

継承階層

Object
  Microsoft.VisualStudio.TextTemplating.DirectiveProcessor
    Microsoft.VisualStudio.TextTemplating.RequiresProvidesDirectiveProcessor

名前空間:  Microsoft.VisualStudio.TextTemplating
アセンブリ:  Microsoft.VisualStudio.TextTemplating.12.0 (Microsoft.VisualStudio.TextTemplating.12.0.dll 内)

構文

'宣言
Public MustInherit Class RequiresProvidesDirectiveProcessor _
    Inherits DirectiveProcessor
public abstract class RequiresProvidesDirectiveProcessor : DirectiveProcessor
public ref class RequiresProvidesDirectiveProcessor abstract : public DirectiveProcessor
[<AbstractClass>]
type RequiresProvidesDirectiveProcessor =  
    class 
        inherit DirectiveProcessor 
    end
public abstract class RequiresProvidesDirectiveProcessor extends DirectiveProcessor

RequiresProvidesDirectiveProcessor 型で公開されるメンバーは以下のとおりです。

コンストラクター

  名前 説明
プロテクト メソッド RequiresProvidesDirectiveProcessor 派生クラスでオーバーライドされた場合、RequiresProvidesDirectiveProcessor クラスの新しいインスタンスを初期化します。

このページのトップへ

プロパティ

  名前 説明
プロテクト プロパティ Errors 発生したエラーを処理するときに、ディレクティブを取得します。 (DirectiveProcessor から継承されます。)
プロテクト プロパティ FriendlyName 派生クラスでオーバーライドされた場合、ディレクティブ プロセッサのフレンドリ名を取得します。
プロテクト プロパティ Host このディレクティブ プロセッサに関連付けられているホストを取得します。

このページのトップへ

メソッド

  名前 説明
パブリック メソッド Equals 指定したオブジェクトが、現在のオブジェクトと等しいかどうかを判断します。 (Object から継承されます。)
プロテクト メソッド Finalize オブジェクトが、ガベージ コレクションによって収集される前に、リソースの解放とその他のクリーンアップ操作の実行を試みることができるようにします。 (Object から継承されます。)
パブリック メソッド FinishProcessingRun 一連のディレクティブ処理を終了します。 (DirectiveProcessor.FinishProcessingRun() をオーバーライドします。)
プロテクト メソッド GeneratePostInitializationCode 派生クラスでオーバーライドされると、生成された変換クラスの初期化コードにコードを追加します。このコードは、基本クラスの初期化後に追加されます。
プロテクト メソッド GeneratePreInitializationCode 派生クラスでオーバーライドされると、生成された変換クラスの初期化コードにコードを追加します。このコードは、基本クラスの初期化前に追加されます。
プロテクト メソッド GenerateTransformCode 派生クラスでオーバーライドされると、生成された変換クラスにコードを追加します。
パブリック メソッド GetClassCodeForProcessingRun 生成された変換クラスに追加するコードを取得します。 (DirectiveProcessor.GetClassCodeForProcessingRun() をオーバーライドします。)
パブリック メソッド GetHashCode 既定のハッシュ関数として機能します。 (Object から継承されます。)
パブリック メソッド GetImportsForProcessingRun 生成された変換クラスにインポートする名前空間を取得します。 (DirectiveProcessor.GetImportsForProcessingRun() をオーバーライドします。)
パブリック メソッド GetPostInitializationCodeForProcessingRun 直前の処理実行の結果、生成された変換クラスが初期化されるときに、初期化するためのコードを取得します。 (DirectiveProcessor.GetPostInitializationCodeForProcessingRun() をオーバーライドします。)
パブリック メソッド GetPreInitializationCodeForProcessingRun 直前の処理実行の結果、生成された変換クラスが初期化されるときに、初期化するためのコードを取得します。 (DirectiveProcessor.GetPreInitializationCodeForProcessingRun() をオーバーライドします。)
パブリック メソッド GetReferencesForProcessingRun 生成された変換クラスのコンパイラに渡す参照を取得します。 (DirectiveProcessor.GetReferencesForProcessingRun() をオーバーライドします。)
パブリック メソッド GetTemplateClassCustomAttributes テンプレート クラスを設定するには、カスタム属性を取得します。 (DirectiveProcessor から継承されます。)
パブリック メソッド GetType 現在のインスタンスの Type を取得します。 (Object から継承されます。)
パブリック メソッド Initialize ディレクティブ プロセッサのインスタンスを初期化します。 (DirectiveProcessor.Initialize(ITextTemplatingEngineHost) をオーバーライドします。)
プロテクト メソッド InitializeProvidesDictionary 派生クラスでオーバーライドされた場合、ディレクティブごとに provides パラメーターを指定します。
プロテクト メソッド InitializeRequiresDictionary 派生クラスでオーバーライドされた場合、ディレクティブごとに requires パラメーターを指定します。
パブリック メソッド IsDirectiveSupported 派生クラスで無視されると、ディレクティブ プロセッサが指定されたディレクティブをサポートするかどうかを判定します。 (DirectiveProcessor から継承されます。)
プロテクト メソッド MemberwiseClone Object の簡易コピーを作成します。 (Object から継承されます。)
プロテクト メソッド PostProcessArguments 派生クラスでオーバーライドされた場合、派生クラスが提供および要求するパラメーターをそのクラスで変更できるようにします。
パブリック メソッド ProcessDirective テキスト テンプレート ファイルから 1 つのディレクティブを処理します。 (DirectiveProcessor.ProcessDirective(String, IDictionary<String, String>) をオーバーライドします。)
プロテクト メソッド ProvideUniqueId ディレクティブ プロセッサの呼び出しを識別する ID を提供します。
パブリック メソッド StartProcessingRun ディレクティブ プロセッサを開始します。 (DirectiveProcessor.StartProcessingRun(CodeDomProvider, String, CompilerErrorCollection) をオーバーライドします。)
パブリック メソッド ToString 現在のオブジェクトを表す文字列を返します。 (Object から継承されます。)

このページのトップへ

明示的なインターフェイスの実装

  名前 説明
明示的なインターフェイス実装プライベート プロパティ IDirectiveProcessor.Errors (DirectiveProcessor から継承されます。)
明示的なインターフェイス実装プライベート プロパティ IDirectiveProcessor.RequiresProcessingRunIsHostSpecific (DirectiveProcessor から継承されます。)
明示的なインターフェイス実装プライベート メソッド IDirectiveProcessor.SetProcessingRunIsHostSpecific (DirectiveProcessor から継承されます。)

このページのトップへ

解説

カスタム ディレクティブ プロセッサを作成するには、DirectiveProcessor または RequiresProvidesDirectiveProcessor を継承するクラスを作成します。

DirectiveProcessor は、ユーザーからのパラメーターをキャプチャするために必要で、生成された変換クラスの機能を提供するインターフェイスを実装します。 RequiresProvidesDirectiveProcessor RequiresProvidesDirectiveProcessor は、ディレクティブ プロセッサのデザイン パターン、要求/提供を実装します。 RequiresProvidesDirectiveProcessor は、ユーザーからパラメーターをキャプチャするための追加機能を提供し、特定のプロパティ名で生成された変換クラスに機能を提供します。

詳細については、「カスタム T4 テキスト テンプレート ディレクティブ プロセッサの作成」を参照してください。

変換エンジンは、必要な RequiresProvidesDirectiveProcessor クラスのシングルトンを保持します。

RequiresProvidesDirectiveProcessor は、ステート マシンを実装します。

たとえば、テキスト テンプレートに同じディレクティブ プロセッサへの 3 つのディレクティブ呼び出しがある場合、エンジンは以下の順序でメソッドを呼び出します。

RequiresProvidesDirectiveProcessor の使用方法を次の例に示します。

using System;
using System.Collections.Generic;
using System.Text;
using Microsoft.VisualStudio.TextTemplating;
using System.Xml;
using System.IO;
using System.Globalization;

namespace Microsoft.Samples.VisualStudio.TextTemplating.DirectiveProcessors
{
public class DomDirectiveProcessor : RequiresProvidesDirectiveProcessor
{

// Name of the tag that this directive processor supports.
private const string DomDirectiveTag = "dom";

//Name of the parameter that must be provided for this directive processor to load an XML file
private const string XmlFileRequiredParameterName = "XmlFile";

// Default name of the property that this provider adds to the generated transform class.
private const string DomProvidedParameterName = "Dom";

// Set up the dictionary of items that this directive processor will provide.
protected override void InitializeProvidesDictionary(string directiveName, IDictionary<string, string> providesDictionary)
{
if (StringComparer.InvariantCultureIgnoreCase.Compare(directiveName, DomDirectiveTag) == 0)
{
// Populate the dictionary with defualt names.
providesDictionary[DomProvidedParameterName] = DomProvidedParameterName;
}
}

// Set up the dictionary of items that this directive processor requires to complete.
protected override void InitializeRequiresDictionary(string directiveName, IDictionary<string, string> requiresDictionary)
{
if (StringComparer.InvariantCultureIgnoreCase.Compare(directiveName, DomDirectiveTag) == 0)
{
// Initialize the dictionary with nulls for each required parameter.
requiresDictionary[XmlFileRequiredParameterName] = null;
}
}
}
}

スレッド セーフ

この型のすべてのパブリック static (Visual Basic では Shared) メンバーは、スレッド セーフです。インスタンス メンバーの場合は、スレッド セーフであるとは限りません。

参照

関連項目

Microsoft.VisualStudio.TextTemplating 名前空間

DirectiveProcessor

その他の技術情報

カスタム T4 テキスト テンプレート ディレクティブ プロセッサの作成