UriTemplateTable UriTemplateTable UriTemplateTable UriTemplateTable Class

Определение

Класс, представляющий ассоциативный набор объектов UriTemplate.A class that represents an associative set of UriTemplate objects.

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

Примеры

В следующем примере кода показано, как создать объект UriTemplateTable, заполнить его и сравнить с ним потенциальный Uri.The following code shows how to create a UriTemplateTable, populate it, and use it to match against a candidate 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, привязанных к объекту, выбранному разработчиком.A UriTemplateTable is an associative set of UriTemplate objects bound to an object of the developer's choosing. Он позволяет сопоставлять потенциальные универсальные коды ресурсов (URI) с содержащимися в наборе шаблонами и извлекать данные, связанные с шаблонами, для которых обнаружено соответствие.It allows you to match candidate Uniform Resource Identifiers (URIs) against the templates in the set and retrieve the data associated with the matching templates. Содержимое объекта UriTemplateTable можно изменять до вызова метода MakeReadOnly(Boolean), после чего выполняется проверка одного из следующих типов:The contents of UriTemplateTable can be changed until the MakeReadOnly(Boolean) method is called, at which time one of following types of validation occurs:

  • Если при вызове метода MakeReadOnly(Boolean) передается значение false, таблица UriTemplateTable проверяется на предмет содержания нескольких шаблонов с одинаковой структурой.When MakeReadOnly(Boolean) is called passing in false, the UriTemplateTable checks to make sure the table contains no multiple structurally-equivalent templates. Если такие шаблоны обнаружены, возникает исключение.If it finds such templates, it throws an exception. Эта проверка используется совместно с методом MatchSingle(Uri), если требуется обеспечить, чтобы только один шаблон соответствовал входящему универсальному коду ресурса (URI).This type of validation is used in conjunction with MatchSingle(Uri) when you want to ensure only one template matches an incoming URI.

  • Если при вызове метода MakeReadOnly(Boolean) передается значение true, в объекте UriTemplateTable может содержаться несколько шаблонов с эквивалентной структурой.When MakeReadOnly(Boolean) is called passing in true, multiple structurally-equivalent templates can be contained within a UriTemplateTable. Впрочем, все строки запросов в шаблонах не должны быть неоднозначными. Допускаются идентичные строки запросов.However, any query strings in the templates must not be ambiguous; identical query strings are allowed. Дополнительные сведения о неоднозначных строках запросов см. в разделе UriTemplate и UriTemplateTable.For more information about ambiguous query strings, see UriTemplate and UriTemplateTable.

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

UriTemplateTable() UriTemplateTable() UriTemplateTable() UriTemplateTable()

Инициализирует новый экземпляр класса UriTemplateTable.Initializes a new instance of the UriTemplateTable class.

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

Инициализирует новый экземпляр класса UriTemplateTable с указанной коллекцией пар "ключ-значение".Initializes a new instance of the UriTemplateTable class with the specified collection of key/value pairs.

UriTemplateTable(Uri) UriTemplateTable(Uri) UriTemplateTable(Uri) UriTemplateTable(Uri)

Инициализирует новый экземпляр класса UriTemplateTable с указанным базовым адресом.Initializes a new instance of the UriTemplateTable class with the specified base address.

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

Инициализирует новый экземпляр класса UriTemplateTable с указанным базовым адресом и коллекцией пар "ключ-значение".Initializes a new instance of the UriTemplateTable class with the specified base address and collection of key/value pairs.

Свойства

BaseAddress BaseAddress BaseAddress BaseAddress

Получает или задает базовый адрес экземпляра UriTemplateTable.Gets or sets the base address for the UriTemplateTable instance.

IsReadOnly IsReadOnly IsReadOnly IsReadOnly

Возвращает значение, которое показывает, является ли объект UriTemplateTable доступным только для чтения.Gets a value that specifies whether the UriTemplateTable is read only.

KeyValuePairs KeyValuePairs KeyValuePairs KeyValuePairs

Возвращает коллекцию пар "ключ-значение", содержащую объекты UriTemplate и связанные с ними данные.Gets a collection of key/value pairs that consist of UriTemplate objects and their associated data.

OriginalBaseAddress OriginalBaseAddress OriginalBaseAddress OriginalBaseAddress

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

Методы

Equals(Object) Equals(Object) Equals(Object) Equals(Object)

Определяет, равен ли заданный объект текущему объекту.Determines whether the specified object is equal to the current object.

(Inherited from Object)
GetHashCode() GetHashCode() GetHashCode() GetHashCode()

Служит хэш-функцией по умолчанию.Serves as the default hash function.

(Inherited from Object)
GetType() GetType() GetType() GetType()

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

(Inherited from Object)
MakeReadOnly(Boolean) MakeReadOnly(Boolean) MakeReadOnly(Boolean) MakeReadOnly(Boolean)

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

Match(Uri) Match(Uri) Match(Uri) Match(Uri)

Сопоставляет потенциальный Uri с таблицей UriTemplateTable.Attempts to match a candidate Uri to the UriTemplateTable.

MatchSingle(Uri) MatchSingle(Uri) MatchSingle(Uri) MatchSingle(Uri)

Сопоставляет потенциальный Uri с таблицей UriTemplateTable.Attempts to match a candidate Uri to the UriTemplateTable.

MemberwiseClone() MemberwiseClone() MemberwiseClone() MemberwiseClone()

Создает неполную копию текущего объекта Object.Creates a shallow copy of the current Object.

(Inherited from Object)
ToString() ToString() ToString() ToString()

Возвращает строку, представляющую текущий объект.Returns a string that represents the current object.

(Inherited from Object)

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