UriTemplateTable Класс

Определение

Класс, представляющий ассоциативный набор объектов UriTemplate.

public ref class UriTemplateTable
public class UriTemplateTable
type UriTemplateTable = class
Public Class UriTemplateTable
Наследование
UriTemplateTable

Примеры

В следующем примере кода показано, как создать объект UriTemplateTable, заполнить его и сравнить с ним потенциальный Uri.

Uri prefix = new Uri("http://localhost/");

//Create a series of templates
UriTemplate weatherByCity  = new UriTemplate("weather/{state}/{city}");
UriTemplate weatherByCountry = new UriTemplate("weather/{country}/{village}");
UriTemplate weatherByState = new UriTemplate("weather/{state}");
UriTemplate traffic = new UriTemplate("traffic/*");
UriTemplate wildcard = new UriTemplate("*");

//Create a template table
UriTemplateTable table = new UriTemplateTable(prefix);
//Add each template to the table with some associated data
table.KeyValuePairs.Add(new KeyValuePair<UriTemplate, Object>(weatherByCity, "weatherByCity"));
table.KeyValuePairs.Add(new KeyValuePair<UriTemplate, Object>(weatherByCountry, "weatherByCountry"));
table.KeyValuePairs.Add(new KeyValuePair<UriTemplate, Object>(weatherByState, "weatherByState"));
table.KeyValuePairs.Add(new KeyValuePair<UriTemplate, Object>(traffic, "traffic"));

table.MakeReadOnly(true);
Console.WriteLine("KeyValuePairs:");
foreach (KeyValuePair<UriTemplate, Object> keyPair in table.KeyValuePairs)
{
    Console.WriteLine($"{keyPair.Key}, {keyPair.Value}");
}

Console.WriteLine();

//Call MatchSingle to retrieve some match results:
ICollection<UriTemplateMatch> results = null;
Uri weatherInSeattle = new Uri("http://localhost/weather/Washington/Seattle");

results = table.Match(weatherInSeattle);
if( results != null)
{
    Console.WriteLine("Matching templates:");
    foreach (UriTemplateMatch match in results)
    {
        Console.WriteLine(match.Template);
    }
}
Dim prefix As New Uri("http://localhost/")

' Create a series of templates
Dim weatherByCity As New UriTemplate("weather/ state}/ city}")
Dim weatherByCountry As New UriTemplate("weather/ country}/ village}")
Dim weatherByState As New UriTemplate("weather/ state}")
Dim traffic As New UriTemplate("traffic/*")
Dim wildcard As New UriTemplate("*")

' Create a template table
Dim table As New UriTemplateTable(prefix)
' Add each template to the table with some associated data
table.KeyValuePairs.Add(New KeyValuePair(Of UriTemplate, Object)(weatherByCity, "weatherByCity"))
table.KeyValuePairs.Add(New KeyValuePair(Of UriTemplate, Object)(weatherByCountry, "weatherByCountry"))
table.KeyValuePairs.Add(New KeyValuePair(Of UriTemplate, Object)(weatherByState, "weatherByState"))
table.KeyValuePairs.Add(New KeyValuePair(Of UriTemplate, Object)(traffic, "traffic"))

table.MakeReadOnly(True)
Console.WriteLine("KeyValuePairs:")
For Each keyPair As KeyValuePair(Of UriTemplate, Object) In table.KeyValuePairs
    Console.WriteLine("     0},  1}", keyPair.Key, keyPair.Value)
Next

Console.WriteLine()

' Call MatchSingle to retrieve some match results:
Dim results As System.Collections.Generic.ICollection(Of UriTemplateMatch) = Nothing
Dim weatherInSeattle As Uri = New Uri("http://localhost/weather/Washington/Seattle")

results = table.Match(weatherInSeattle)
If results IsNot Nothing Then
    Console.WriteLine("Matching templates:")
    For Each match As UriTemplateMatch In results
        Console.WriteLine("    0}", match.Template)
    Next
End If

Комментарии

UriTemplateTable — ассоциативный набор объектов UriTemplate, привязанных к объекту, выбранному разработчиком. Он позволяет сопоставлять потенциальные универсальные коды ресурсов (URI) с содержащимися в наборе шаблонами и извлекать данные, связанные с шаблонами, для которых обнаружено соответствие. Содержимое объекта UriTemplateTable можно изменять до вызова метода MakeReadOnly(Boolean), после чего выполняется проверка одного из следующих типов:

  • Если при вызове метода MakeReadOnly(Boolean) передается значение false, таблица UriTemplateTable проверяется на предмет содержания нескольких шаблонов с одинаковой структурой. Если такие шаблоны обнаружены, возникает исключение. Эта проверка используется совместно с методом MatchSingle(Uri), если требуется обеспечить, чтобы только один шаблон соответствовал входящему универсальному коду ресурса (URI).

  • Если при вызове метода MakeReadOnly(Boolean) передается значение true, в объекте UriTemplateTable может содержаться несколько шаблонов с эквивалентной структурой. Впрочем, все строки запросов в шаблонах не должны быть неоднозначными. Допускаются идентичные строки запросов. Дополнительные сведения о неоднозначных строках запроса см. в разделах UriTemplate и UriTemplateTable.

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

UriTemplateTable()

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

UriTemplateTable(IEnumerable<KeyValuePair<UriTemplate,Object>>)

Инициализирует новый экземпляр класса UriTemplateTable с указанной коллекцией пар "ключ-значение".

UriTemplateTable(Uri)

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

UriTemplateTable(Uri, IEnumerable<KeyValuePair<UriTemplate,Object>>)

Инициализирует новый экземпляр класса UriTemplateTable с указанным базовым адресом и коллекцией пар "ключ-значение".

Свойства

BaseAddress

Получает или задает базовый адрес экземпляра UriTemplateTable.

IsReadOnly

Возвращает значение, которое показывает, является ли объект UriTemplateTable доступным только для чтения.

KeyValuePairs

Возвращает коллекцию пар "ключ-значение", содержащую объекты UriTemplate и связанные с ними данные.

OriginalBaseAddress

Получает исходный базовый адрес.

Методы

Equals(Object)

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

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

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

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

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

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

Делает объект UriTemplateTable доступным только для чтения.

Match(Uri)

Сопоставляет потенциальный Uri с таблицей UriTemplateTable.

MatchSingle(Uri)

Сопоставляет потенциальный Uri с таблицей UriTemplateTable.

MemberwiseClone()

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

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

Возвращает строку, представляющую текущий объект.

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

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