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 (Uniform Resource Identifier) を照合し、一致したテンプレートに関連付けられているデータを取得することができます。 UriTemplateTable のコンテンツは、MakeReadOnly(Boolean) メソッドが呼び出されるまで変更することができます。メソッドが呼び出された時点で、以下のいずれかの種類の検証が行われます。

  • MakeReadOnly(Boolean) を渡して false を呼び出す場合、UriTemplateTable はテーブル内に構造的に等しい複数のテンプレートが存在しないことを確認します。 そのようなテンプレートが見つかった場合は、例外がスローされます。 この種類の検証は、受信 URI と一致するテンプレートが 1 つだけであることを確認する場合に、MatchSingle(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)

候補 UriUriTemplateTable との照合を試みます。

MatchSingle(Uri)

候補 UriUriTemplateTable との照合を試みます。

MemberwiseClone()

現在の Object の簡易コピーを作成します。

(継承元 Object)
ToString()

現在のオブジェクトを表す文字列を返します。

(継承元 Object)

適用対象