RequiresProvidesDirectiveProcessor クラス
requires/provides のデザイン パターンを定義および実装するディレクティブ プロセッサの抽象基本クラス。
継承階層
System.Object
Microsoft.VisualStudio.TextTemplating.DirectiveProcessor
Microsoft.VisualStudio.TextTemplating.RequiresProvidesDirectiveProcessor
名前空間: Microsoft.VisualStudio.TextTemplating
アセンブリ: Microsoft.VisualStudio.TextTemplating.10.0 (Microsoft.VisualStudio.TextTemplating.10.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 が、現在の Object と等しいかどうかを判断します。 (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() をオーバーライドします。) | |
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 から継承されます。) |
このページのトップへ
解説
カスタム ディレクティブ プロセッサを作成するには、DirectiveProcessor または RequiresProvidesDirectiveProcessor を継承するクラスを作成します。
DirectiveProcessor は、ユーザーからのパラメーターをキャプチャするために必要で、生成された変換クラスの機能を提供するインターフェイスを実装します。 RequiresProvidesDirectiveProcessor RequiresProvidesDirectiveProcessor は、ディレクティブ プロセッサのデザイン パターン、要求/提供を実装します。 RequiresProvidesDirectiveProcessor は、ユーザーからパラメーターをキャプチャするための追加機能を提供し、特定のプロパティ名で生成された変換クラスに機能を提供します。
詳細については、「カスタム テキスト テンプレート ディレクティブ プロセッサの作成」を参照してください。
変換エンジンは、必要な RequiresProvidesDirectiveProcessor クラスのシングルトンを保持します。
RequiresProvidesDirectiveProcessor は、ステート マシンを実装します。
たとえば、テキスト テンプレートに同じディレクティブ プロセッサへの 3 つのディレクティブ呼び出しがある場合、エンジンは以下の順序でメソッドを呼び出します。
StartProcessingRun(CodeDomProvider)
例
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 名前空間