Прочитать на английском

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


UriTemplate Класс

Определение

Класс, представляющий шаблон универсального кода ресурса (URI).

public class UriTemplate
Наследование
UriTemplate

Примеры

В следующем примере кода демонстрируется создание экземпляра UriTemplate, его привязка и сопоставление с потенциальным URI.

UriTemplate template = new UriTemplate("weather/{state}/{city}?forecast={day}");
Uri prefix = new Uri("http://localhost");

Console.WriteLine("PathSegmentVariableNames:");
foreach (string name in template.PathSegmentVariableNames)
{
    Console.WriteLine("     {0}", name);
}
Console.WriteLine();

Console.WriteLine("QueryValueVariableNames:");
foreach (string name in template.QueryValueVariableNames)
{
    Console.WriteLine("     {0}", name);
}
Console.WriteLine();

Uri positionalUri = template.BindByPosition(prefix, "Washington", "Redmond", "Today");

NameValueCollection parameters = new NameValueCollection();
parameters.Add("state", "Washington");
parameters.Add("city", "Redmond");
parameters.Add("day", "Today");
Uri namedUri = template.BindByName(prefix, parameters);

Uri fullUri = new Uri("http://localhost/weather/Washington/Redmond?forecast=today");
UriTemplateMatch results = template.Match(prefix, fullUri);

Console.WriteLine("Matching {0} to {1}", template.ToString(), fullUri.ToString());

if (results != null)
{
    foreach (string variableName in results.BoundVariables.Keys)
    {
        Console.WriteLine("   {0}: {1}", variableName, results.BoundVariables[variableName]);
    }
}

Комментарии

Шаблон URI позволяет определить набор кодов URI с одинаковой структурой. Шаблоны состоят из двух частей: путь и запрос. Путь состоит из серии сегментов, разделенных косой чертой (/). Каждый сегмент может иметь литеральное значение, значение переменной (заключенное в фигурные скобки [{ }]), которое должно в точности совпадать с содержимым одного сегмента, или подстановочный знак (звездочка [*]), который ставится в конце пути и означает «оставшуюся часть пути». Выражение запроса можно полностью опустить. Если оно указано, оно задает неупорядоченную серию пар «имя-значение». Элементами выражения запроса могут быть либо литеральные пары (?x=2), либо пары переменных (?x={val}). Непарные значения не допускаются. В следующих примерах приведены допустимые строки шаблонов:

  • "weather/WA/Seattle"

  • "weather/{state}/{city}"

  • "weather/*"

  • "weather/{state}/{city}?forecast=today

  • "weather/{state}/{city}?forecast={day}

С помощью приведенных выше шаблонов URI можно упорядочить прогнозы погоды. Сегменты в фигурных скобках — это переменные, а все остальные — литералы. Экземпляр UriTemplate можно преобразовать в Uri, заменив переменные фактическими значениями. Например, если в шаблон "weather/{state}/{city}" подставить значения переменных "{state}" и "{city}", получится "weather/WA/Seattle". Можно проверить, соответствует ли потенциальный URI заданному шаблону URI, вызвав метод Match(Uri, Uri). Также можно с помощью экземпляров UriTemplate создать Uri из набора значений переменных, вызвав метод BindByName(Uri, NameValueCollection) или BindByPosition(Uri, String[]).

Конструкторы

UriTemplate(String)

Инициализирует новый экземпляр класса UriTemplate с указанной строкой шаблона.

UriTemplate(String, Boolean)

Инициализирует новый экземпляр класса UriTemplate.

UriTemplate(String, Boolean, IDictionary<String,String>)

Инициализирует новый экземпляр класса UriTemplate.

UriTemplate(String, IDictionary<String,String>)

Инициализирует новый экземпляр класса UriTemplate.

Свойства

Defaults

Получает набор пар «имя-значение» для значений параметров по умолчанию.

IgnoreTrailingSlash

Указывает, учитываются ли символы косой черты "/" в конце строки шаблона при сравнении с подходящими кодами URI.

PathSegmentVariableNames

Возвращает коллекцию имен переменных, используемых в сегментах пути в шаблоне.

QueryValueVariableNames

Возвращает коллекцию имен переменных, используемых в строке запроса в шаблоне.

Методы

BindByName(Uri, IDictionary<String,String>)

Создает новый универсальный код ресурса (URI) на основании шаблона и коллекции параметров.

BindByName(Uri, IDictionary<String,String>, Boolean)

Создает новый универсальный код ресурса (URI) на основании шаблона и коллекции параметров.

BindByName(Uri, NameValueCollection)

Создает новый универсальный код ресурса (URI) на основании шаблона и коллекции параметров.

BindByName(Uri, NameValueCollection, Boolean)

Создает новый универсальный код ресурса (URI) на основании шаблона и коллекции параметров.

BindByPosition(Uri, String[])

Создает новый универсальный код ресурса (URI) на основании массива значений параметров.

Equals(Object)

Определяет, равен ли указанный объект текущему объекту.

(Унаследовано от Object)
GetHashCode()

Служит хэш-функцией по умолчанию.

(Унаследовано от Object)
GetType()

Возвращает объект Type для текущего экземпляра.

(Унаследовано от Object)
IsEquivalentTo(UriTemplate)

Показывает, эквивалентна ли структура шаблона UriTemplate структуре другого шаблона.

Match(Uri, Uri)

Проверяет соответствие объекта Uri шаблону UriTemplate.

MemberwiseClone()

Создает неполную копию текущего объекта Object.

(Унаследовано от Object)
ToString()

Возвращает строковое представление экземпляра UriTemplate.

Применяется к

Продукт Версии
.NET Framework 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1