RequiresProvidesDirectiveProcessor 类

定义和实施所调用设计模式需要/提供的指令处理器的抽象基类。

继承层次结构

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 根据文本模板文件处理单个指令。 (重写 DirectiveProcessor.ProcessDirective(String, IDictionary<String, String>)。)
受保护的方法 ProvideUniqueId 提供标识对指令处理器的调用的 ID。
公共方法 StartProcessingRun 启动指令处理器。 (重写 DirectiveProcessor.StartProcessingRun(CodeDomProvider, String, CompilerErrorCollection)。)
公共方法 ToString 返回表示当前对象的字符串。 (继承自 Object。)

页首

备注

若要创建自定义指令处理器,需要创建一个从 DirectiveProcessor 或 RequiresProvidesDirectiveProcessor 继承的类。

DirectiveProcessor 实现从用户捕获参数所需的接口,提供生成的转换类所需的功能。 RequiresProvidesDirectiveProcessor RequiresProvidesDirectiveProcessor 为您的指令处理器实现设计模式,即需要/提供。 RequiresProvidesDirectiveProcessor 实现从用户捕获参数所需的接口,提供生成的转换类所需的功能。

有关更多信息,请参见 创建自定义文本模板指令处理器

转换引擎保存任何所需 RequiresProvidesDirectiveProcessor 类的单一实例。

RequiresProvidesDirectiveProcessor 实现状态机。

例如,如果文本模板具有同一指令处理器的三个指令调用,则引擎会按顺序调用以下方法:

示例

下面的示例演示如何使用 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

其他资源

创建自定义文本模板指令处理器