UriTemplateTable クラス


UriTemplate オブジェクトの結合セットを表すクラス。A class that represents an associative set of UriTemplate objects.

public ref class UriTemplateTable
public class UriTemplateTable
type UriTemplateTable = class
Public Class UriTemplateTable

次のコードは、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"));

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


//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)
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"))

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


' 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)
End If


UriTemplateTable は、開発者が選択したオブジェクトにバインドされた UriTemplate オブジェクトの結合セットです。A UriTemplateTable is an associative set of UriTemplate objects bound to an object of the developer's choosing. これにより、セット内のテンプレートと候補 URI (Uniform Resource Identifier) を照合し、一致したテンプレートに関連付けられているデータを取得することができます。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. この種類の検証は、受信 URI と一致するテンプレートが 1 つだけであることを確認する場合に、MatchSingle(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 クラスの新しいインスタンスを初期化します。Initializes a new instance of the UriTemplateTable class.


指定したキーと値のペアのコレクションを使用して、UriTemplateTable クラスの新しいインスタンスを初期化します。Initializes a new instance of the UriTemplateTable class with the specified collection of key/value pairs.


指定したベース アドレスを使用して UriTemplateTable クラスの新しいインスタンスを初期化します。Initializes a new instance of the UriTemplateTable class with the specified base address.

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.



UriTemplateTable インスタンスのベース アドレスを取得または設定します。Gets or sets the base address for the UriTemplateTable instance.


UriTemplateTable が読み取り専用かどうかを指定する値を取得します。Gets a value that specifies whether the UriTemplateTable is read only.


UriTemplate オブジェクトと関連したデータで構成されるキーと値のペアのコレクションを取得します。Gets a collection of key/value pairs that consist of UriTemplate objects and their associated data.


元のベース アドレスを取得します。Gets the original base address.



指定されたオブジェクトが現在のオブジェクトと等しいかどうかを判断します。Determines whether the specified object is equal to the current object.

(継承元 Object)

既定のハッシュ関数として機能します。Serves as the default hash function.

(継承元 Object)

現在のインスタンスの Type を取得します。Gets the Type of the current instance.

(継承元 Object)

UriTemplateTable を読み取り専用にします。Makes the UriTemplateTable read only.


候補 UriUriTemplateTable との照合を試みます。Attempts to match a candidate Uri to the UriTemplateTable.


候補 UriUriTemplateTable との照合を試みます。Attempts to match a candidate Uri to the UriTemplateTable.


現在の Object の簡易コピーを作成します。Creates a shallow copy of the current Object.

(継承元 Object)

現在のオブジェクトを表す文字列を返します。Returns a string that represents the current object.

(継承元 Object)