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 | Обрабатывает одну директиву из файла текстового шаблона. (Переопределяет DirectiveProcessor.ProcessDirective(String, IDictionary<String, String>).) |
![]() |
ProvideUniqueId | Предоставляет идентификатор вызова процессора директив. |
![]() |
StartProcessingRun | Запускает процессор директив. (Переопределяет DirectiveProcessor.StartProcessingRun(CodeDomProvider, String, CompilerErrorCollection).) |
![]() |
ToString | Возвращение строки, представляющей текущий объект. (Унаследовано от Object.) |
В начало страницы
Заметки
Для создания пользовательского процессора директив создается класс, наследующий 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 (Shared в Visual Basic), являются потокобезопасными. Потокобезопасность членов экземпляров не гарантируется.
См. также
Ссылки
Microsoft.VisualStudio.TextTemplating - пространство имен
Другие ресурсы
Создание пользовательских обработчиков директив для текстовых шаблонов