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 с одинаковой структурой. Шаблоны состоят из двух частей: путь и запрос. Путь состоит из серии сегментов, разделенных косой чертой (/). Каждый сегмент может иметь литеральное значение, значение переменной (заключенное в фигурные скобки [{ }]), которое должно в точности совпадать с содержимым одного сегмента, или подстановочный знак (звездочка [*]), который ставится в конце пути и означает «оставшуюся часть пути». Выражение запроса можно полностью опустить. Если оно указано, оно задает неупорядоченную серию пар «имя-значение». Элементами выражения запроса могут быть либо литеральные пары (?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. |