RequiresProvidesDirectiveProcessor 類別
指示詞處理器的抽象基底類別,定義及實作所謂的 requires/provides 設計模式。
繼承階層架構
System.Object
Microsoft.VisualStudio.TextTemplating.DirectiveProcessor
Microsoft.VisualStudio.TextTemplating.RequiresProvidesDirectiveProcessor
命名空間: Microsoft.VisualStudio.TextTemplating
組件: Microsoft.VisualStudio.TextTemplating.11.0 (在 Microsoft.VisualStudio.TextTemplating.11.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 | 取得與指示詞處理器相關聯的主機。 |
回頁首
方法
回頁首
明確介面實作
回頁首
備註
若要建立自訂指示詞處理器,您可以建立繼承 DirectiveProcessor 或 RequiresProvidesDirectiveProcessor 的類別。
DirectiveProcessor 會實作從使用者擷取參數所需的介面,並且提供所產生的轉換類別的功能。 RequiresProvidesDirectiveProcessorRequiresProvidesDirectiveProcessor 會實作指示詞處理器的設計模式,也就是「需求/提供」(Require/Provide)。 RequiresProvidesDirectiveProcessor 提供額外的機能來擷取該使用者的參數,並為具有指定屬性名稱的產生轉換類別提供功能。
如需詳細資訊,請參閱 建立自訂 T4 文字範本指示詞處理器。
轉換引擎會保留任何必要的 RequiresProvidesDirectiveProcessor 類別的單一物件。
RequiresProvidesDirectiveProcessor 會實作狀態機器。
例如,如果文字範本對同一個指示詞處理器發出三個指示詞呼叫,引擎會依順序呼叫下列方法:
StartProcessingRun
範例
下列範例示範如何使用 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;
}
}
}
}
執行緒安全
這個型別的任何 Public static (在 Visual Basic 中為 Shared) 成員都具備執行緒安全。不保證任何執行個體成員是安全執行緒。
請參閱
參考
Microsoft.VisualStudio.TextTemplating 命名空間