UriTemplateTable 类
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
一个表示对象关联集的 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
注解
A UriTemplateTable 是绑定到开发人员选择对象的关联对象集 UriTemplate 。 它允许将候选统一资源标识符(URI)与集中的模板匹配,并检索与匹配模板关联的数据。 在调用方法之前UriTemplateTable,可以更改其内容MakeReadOnly(Boolean),此时会发生以下类型的验证之一:
调用传入MakeReadOnly(Boolean)时
false,检查UriTemplateTable以确保表不包含多个结构等效模板。 如果找到此类模板,则会引发异常。 如果要确保只有一个模板与传入 URI 匹配,则会结合使用 MatchSingle(Uri) 这种类型的验证。调用传入MakeReadOnly(Boolean)时
true,可以包含UriTemplateTable多个结构等效模板。 但是,模板中的任何查询字符串不得不明确;允许相同的查询字符串。 有关不明确查询字符串的详细信息,请参阅 UriTemplate 和 UriTemplateTable。
构造函数
| 名称 | 说明 |
|---|---|
| UriTemplateTable() |
初始化 UriTemplateTable 类的新实例。 |
| UriTemplateTable(IEnumerable<KeyValuePair<UriTemplate,Object>>) |
使用指定的键/值对集合初始化类的新实例 UriTemplateTable 。 |
| UriTemplateTable(Uri, IEnumerable<KeyValuePair<UriTemplate,Object>>) |
使用指定的基址和键/值对集合初始化类的新实例 UriTemplateTable 。 |
| UriTemplateTable(Uri) |
使用指定的基址初始化类的新实例 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) |