UriTemplate Класс

Определение

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

public ref class UriTemplate
public class UriTemplate
type UriTemplate = class
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]);
    }
}
Dim template As UriTemplate = New UriTemplate("weather/{state}/{city}?forecast={day}")
Dim prefix As Uri = New Uri("http://localhost")

Console.WriteLine("PathSegmentVariableNames:")
For Each name As String In template.PathSegmentVariableNames
    Console.WriteLine("     {0}", name)
Next

Console.WriteLine()
Console.WriteLine("QueryValueVariableNames:")
For Each name As String In template.QueryValueVariableNames
    Console.WriteLine("     {0}", name)
Next
Console.WriteLine()

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

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

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

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

If results IsNot Nothing Then
    For Each variableName As String In results.BoundVariables.Keys
        Console.WriteLine("   {0}: {1}", variableName, results.BoundVariables(variableName))
    Next
End If

Комментарии

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

  • "погода/WA/Сиэтл"

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

  • "погода/*"

  • "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, Boolean, IDictionary<String,String>)

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

UriTemplate(String, Boolean)

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

UriTemplate(String, IDictionary<String,String>)

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

UriTemplate(String)

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

Свойства

Имя Описание
Defaults

Возвращает коллекцию пар "имя-значение" для любых значений параметров по умолчанию.

IgnoreTrailingSlash

Указывает, следует ли игнорировать конечные косые черты в шаблоне при сопоставлении URI кандидата.

PathSegmentVariableNames

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

QueryValueVariableNames

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

Методы

Имя Описание
BindByName(Uri, IDictionary<String,String>, Boolean)

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

BindByName(Uri, IDictionary<String,String>)

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

BindByName(Uri, NameValueCollection, Boolean)

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

BindByName(Uri, NameValueCollection)

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

BindByPosition(Uri, String[])

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

Equals(Object)

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

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

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

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

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

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

Указывает, является ли объект UriTemplate структурны эквивалентным другим.

Match(Uri, Uri)

Пытается сопоставить объект UriUriTemplateс .

MemberwiseClone()

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

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

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

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