Поделиться через


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 реализует конечный автомат.

Например, если текстовый шаблон содержит три директивных вызова одного и того же процессора директив, ядро вызывает следующие методы по порядку:

Примеры

В следующем примере демонстрируется использование примитива 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 - пространство имен

DirectiveProcessor

Другие ресурсы

Создание пользовательских обработчиков директив для текстовых шаблонов