次の方法で共有


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 つのディレクティブ呼び出しがある場合、エンジンは以下の順序でメソッドを呼び出します。

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

その他の技術情報

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