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 | 获取与此指令处理器相关联的主机。 |
页首
方法
页首
备注
若要创建自定义指令处理器,需要创建一个从 DirectiveProcessor 或 RequiresProvidesDirectiveProcessor 继承的类。
DirectiveProcessor 实现从用户捕获参数所需的接口,提供生成的转换类所需的功能。 RequiresProvidesDirectiveProcessor RequiresProvidesDirectiveProcessor 为您的指令处理器实现设计模式,即需要/提供。 RequiresProvidesDirectiveProcessor 实现从用户捕获参数所需的接口,提供生成的转换类所需的功能。
有关更多信息,请参见 创建自定义文本模板指令处理器。
转换引擎保存任何所需 RequiresProvidesDirectiveProcessor 类的单一实例。
RequiresProvidesDirectiveProcessor 实现状态机。
例如,如果文本模板具有同一指令处理器的三个指令调用,则引擎会按顺序调用以下方法:
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 命名空间