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


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 Получает основное приложение, связанное с данным процессором директив.

В начало страницы

Методы

  Имя Описание
Открытый метод Equals Определяет, равен ли заданный объект текущему объекту. (Унаследовано от 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().)
Открытый метод GetTemplateClassCustomAttributes Получите все настраиваемые атрибуты поместить в класс шаблона. (Унаследовано от DirectiveProcessor.)
Открытый метод 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.)

В начало страницы

Явные реализации интерфейса

  Имя Описание
Явная реализация интерфейсаЗакрытое свойство IDirectiveProcessor.Errors (Унаследовано от DirectiveProcessor.)
Явная реализация интерфейсаЗакрытое свойство IDirectiveProcessor.RequiresProcessingRunIsHostSpecific (Унаследовано от DirectiveProcessor.)
Явная реализация интерфейсаЗакрытый метод IDirectiveProcessor.SetProcessingRunIsHostSpecific (Унаследовано от DirectiveProcessor.)

В начало страницы

Заметки

Для создания пользовательского процессора директив создается класс, наследующий DirectiveProcessor либо RequiresProvidesDirectiveProcessor.

DirectiveProcessor реализует интерфейс, который требуется для записи параметров от пользователя, и обеспечивает функциональные возможности для преобразования созданного класса.RequiresProvidesDirectiveProcessorRequiresProvidesDirectiveProcessor реализует шаблон разработки, требует/обеспечивает для процессора директивы.RequiresProvidesDirectiveProcessor предоставляет дополнительные средства для записи параметров от пользователя и функциональные возможности для класса преобразования с определенными именами свойств.

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

Механизм преобразования содержит одноэлементный экземпляр всех требуемых классов 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

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

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