UriTemplate Třída
Definice
Důležité
Některé informace platí pro předběžně vydaný produkt, který se může zásadně změnit, než ho výrobce nebo autor vydá. Microsoft neposkytuje žádné záruky, výslovné ani předpokládané, týkající se zde uváděných informací.
Třída, která představuje šablonu URI (Uniform Resource Identifier).
public ref class UriTemplate
public class UriTemplate
type UriTemplate = class
Public Class UriTemplate
- Dědičnost
-
UriTemplate
Příklady
Následující kód ukazuje, jak vytvořit UriTemplate instanci a vytvořit vazbu a shodovat ji s kandidátským identifikátorem URI.
UriTemplate template = new UriTemplate("weather/{state}/{city}?forecast={day}");
Uri prefix = new Uri("http://localhost");
Console.WriteLine("PathSegmentVariableNames:");
foreach (string name in template.PathSegmentVariableNames)
{
Console.WriteLine(" {0}", name);
}
Console.WriteLine();
Console.WriteLine("QueryValueVariableNames:");
foreach (string name in template.QueryValueVariableNames)
{
Console.WriteLine(" {0}", name);
}
Console.WriteLine();
Uri positionalUri = template.BindByPosition(prefix, "Washington", "Redmond", "Today");
NameValueCollection parameters = new NameValueCollection();
parameters.Add("state", "Washington");
parameters.Add("city", "Redmond");
parameters.Add("day", "Today");
Uri namedUri = template.BindByName(prefix, parameters);
Uri fullUri = new Uri("http://localhost/weather/Washington/Redmond?forecast=today");
UriTemplateMatch results = template.Match(prefix, fullUri);
Console.WriteLine("Matching {0} to {1}", template.ToString(), fullUri.ToString());
if (results != null)
{
foreach (string variableName in results.BoundVariables.Keys)
{
Console.WriteLine(" {0}: {1}", variableName, results.BoundVariables[variableName]);
}
}
Dim template As UriTemplate = New UriTemplate("weather/{state}/{city}?forecast={day}")
Dim prefix As Uri = New Uri("http://localhost")
Console.WriteLine("PathSegmentVariableNames:")
For Each name As String In template.PathSegmentVariableNames
Console.WriteLine(" {0}", name)
Next
Console.WriteLine()
Console.WriteLine("QueryValueVariableNames:")
For Each name As String In template.QueryValueVariableNames
Console.WriteLine(" {0}", name)
Next
Console.WriteLine()
Dim positionalUri As Uri = template.BindByPosition(prefix, "Washington", "Redmond", "Today")
Dim parameters As NameValueCollection = New NameValueCollection()
parameters.Add("state", "Washington")
parameters.Add("city", "Redmond")
parameters.Add("day", "Today")
Dim namedUri As Uri = template.BindByName(prefix, parameters)
Dim fullUri As Uri = New Uri("http://localhost/weather/Washington/Redmond?forecast=today")
Dim results As UriTemplateMatch = template.Match(prefix, fullUri)
Console.WriteLine("Matching {0} to {1}", template.ToString(), fullUri.ToString())
If results IsNot Nothing Then
For Each variableName As String In results.BoundVariables.Keys
Console.WriteLine(" {0}: {1}", variableName, results.BoundVariables(variableName))
Next
End If
Poznámky
Šablona identifikátoru URI umožňuje definovat sadu strukturálně podobných identifikátorů URI. Šablony se skládají ze dvou částí, cesty a dotazu. Cesta se skládá z řady segmentů oddělených lomítkem (/). Každý segment může mít hodnotu literálu, proměnnou hodnotu (zapsanou v složených závorkách [{ }], omezená tak, aby odpovídala obsahu přesně jednoho segmentu) nebo zástupný znak (napsaný jako hvězdička [*], který odpovídá "zbytku cesty"), který se musí objevit na konci cesty. Výraz dotazu je možné zcela vynechat. Pokud je k dispozici, určuje neuspořádanou řadu párů názvů a hodnot. Prvky výrazu dotazu můžou být buď dvojice literálů (?x=2), nebo páry proměnných (?x={val}). Nezaplacené hodnoty nejsou povoleny. Následující příklady ukazují platné řetězce šablon:
"weather/WA/Seattle"
"weather/{state}/{city}"
"počasí/*"
"weather/{state}/{city}?forecast=today
"weather/{state}/{city}?forecast={day}
Předchozí šablony identifikátoru URI se můžou použít pro uspořádání sestav počasí. Segmenty uzavřené ve složených závorkách jsou proměnné, všechno ostatní je literál. Instanci můžete převést UriTemplate na Uri nahrazení proměnných skutečnými hodnotami. Například když vezmete šablonu "weather/{state}/{city}" a vložíte hodnoty proměnných {state} a {city}, získáte "weather/WA/Seattle". Vzhledem k identifikátoru URI kandidáta můžete otestovat, jestli odpovídá dané šabloně identifikátoru URI voláním Match(Uri, Uri). Instance můžete také použít UriTemplate k vytvoření Uri ze sady proměnných hodnot voláním BindByName(Uri, NameValueCollection) nebo BindByPosition(Uri, String[]).
Konstruktory
UriTemplate(String) |
Inicializuje novou instanci UriTemplate třídy se zadaným řetězcem šablony. |
UriTemplate(String, Boolean) |
Inicializuje novou instanci UriTemplate třídy. |
UriTemplate(String, Boolean, IDictionary<String,String>) |
Inicializuje novou instanci UriTemplate třídy. |
UriTemplate(String, IDictionary<String,String>) |
Inicializuje novou instanci UriTemplate třídy. |
Vlastnosti
Defaults |
Získá kolekci dvojic name/value pro všechny výchozí hodnoty parametrů. |
IgnoreTrailingSlash |
Určuje, jestli se koncové lomítko "/" v šabloně má ignorovat při porovnávání kandidátských identifikátorů URI. |
PathSegmentVariableNames |
Získá kolekci názvů proměnných používaných v rámci segmentů cesty v šabloně. |
QueryValueVariableNames |
Získá kolekci názvů proměnných použitých v řetězci dotazu v šabloně. |
Metody
BindByName(Uri, IDictionary<String,String>) |
Vytvoří nový identifikátor URI ze šablony a kolekce parametrů. |
BindByName(Uri, IDictionary<String,String>, Boolean) |
Vytvoří nový identifikátor URI ze šablony a kolekce parametrů. |
BindByName(Uri, NameValueCollection) |
Vytvoří nový identifikátor URI ze šablony a kolekce parametrů. |
BindByName(Uri, NameValueCollection, Boolean) |
Vytvoří nový identifikátor URI ze šablony a kolekce parametrů. |
BindByPosition(Uri, String[]) |
Vytvoří nový identifikátor URI ze šablony a pole hodnot parametrů. |
Equals(Object) |
Určí, zda se zadaný objekt rovná aktuálnímu objektu. (Zděděno od Object) |
GetHashCode() |
Slouží jako výchozí funkce hash. (Zděděno od Object) |
GetType() |
Type Získá aktuální instanci. (Zděděno od Object) |
IsEquivalentTo(UriTemplate) |
Určuje, zda UriTemplate je strukturálně ekvivalentní jinému. |
Match(Uri, Uri) |
Pokusí se shodovat s znakem Uri UriTemplate. |
MemberwiseClone() |
Vytvoří použádnou kopii aktuálního souboru Object. (Zděděno od Object) |
ToString() |
Vrátí řetězcovou reprezentaci UriTemplate instance. |