UriTemplate Klass
Definition
Viktigt
En del information gäller för förhandsversionen av en produkt och kan komma att ändras avsevärt innan produkten blir allmänt tillgänglig. Microsoft lämnar inga garantier, uttryckliga eller underförstådda, avseende informationen som visas här.
En klass som representerar en URI-mall (Uniform Resource Identifier).
public ref class UriTemplate
public class UriTemplate
type UriTemplate = class
Public Class UriTemplate
- Arv
-
UriTemplate
Exempel
Följande kod visar hur du skapar en UriTemplate instans och binder och matchar den med en kandidat-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
Kommentarer
Med en URI-mall kan du definiera en uppsättning strukturellt liknande URI:er. Mallar består av två delar, en sökväg och en fråga. En sökväg består av en serie segment avgränsade med ett snedstreck (/). Varje segment kan ha ett literalvärde, ett variabelvärde (skrivet inom klammerparenteser [{ }], begränsat för att matcha innehållet i exakt ett segment) eller ett jokertecken (skrivet som en asterisk [*], som matchar "resten av sökvägen"), som måste visas i slutet av sökvägen. Frågeuttrycket kan utelämnas helt. Om det finns anger den en osorterad serie med namn/värde-par. Element i frågeuttrycket kan vara antingen literalpar (?x=2) eller variabelpar (?x={val}). Värden utan par är inte tillåtna. I följande exempel visas giltiga mallsträngar:
"weather/WA/Seattle"
"weather/{state}/{city}"
"väder/*"
"weather/{state}/{city}?forecast=today
"weather/{state}/{city}?forecast={day}
De föregående URI-mallarna kan användas för att organisera väderrapporter. Segment som omges av klammerparenteser är variabler, allt annat är en literal. Du kan konvertera en UriTemplate instans till en Uri genom att ersätta variabler med faktiska värden. Om du till exempel tar mallen "weather/{state}/{city}" och anger värden för variablerna "{state}" och "{city}" får du "väder/WA/Seattle". Med en kandidat-URI kan du testa om den matchar en viss URI-mall genom att anropa Match(Uri, Uri). Du kan också använda UriTemplate instanser för att skapa en Uri från en uppsättning variabelvärden genom att anropa BindByName(Uri, NameValueCollection) eller BindByPosition(Uri, String[]).
Konstruktorer
| Name | Description |
|---|---|
| UriTemplate(String, Boolean, IDictionary<String,String>) |
Initierar en ny instans av UriTemplate klassen. |
| UriTemplate(String, Boolean) |
Initierar en ny instans av UriTemplate klassen. |
| UriTemplate(String, IDictionary<String,String>) |
Initierar en ny instans av UriTemplate klassen. |
| UriTemplate(String) |
Initierar en ny instans av UriTemplate klassen med den angivna mallsträngen. |
Egenskaper
| Name | Description |
|---|---|
| Defaults |
Hämtar en samling namn/värde-par för alla standardparvärden. |
| IgnoreTrailingSlash |
Anger om avslutande snedstreck "/" i mallen ska ignoreras vid matchande kandidat-URI:er. |
| PathSegmentVariableNames |
Hämtar en samling variabelnamn som används inom sökvägssegment i mallen. |
| QueryValueVariableNames |
Hämtar en samling variabelnamn som används i frågesträngen i mallen. |
Metoder
| Name | Description |
|---|---|
| BindByName(Uri, IDictionary<String,String>, Boolean) |
Skapar en ny URI från mallen och samlingen med parametrar. |
| BindByName(Uri, IDictionary<String,String>) |
Skapar en ny URI från mallen och samlingen med parametrar. |
| BindByName(Uri, NameValueCollection, Boolean) |
Skapar en ny URI från mallen och samlingen med parametrar. |
| BindByName(Uri, NameValueCollection) |
Skapar en ny URI från mallen och samlingen med parametrar. |
| BindByPosition(Uri, String[]) |
Skapar en ny URI från mallen och en matris med parametervärden. |
| Equals(Object) |
Avgör om det angivna objektet är lika med det aktuella objektet. (Ärvd från Object) |
| GetHashCode() |
Fungerar som standard-hash-funktion. (Ärvd från Object) |
| GetType() |
Hämtar den aktuella instansen Type . (Ärvd från Object) |
| IsEquivalentTo(UriTemplate) |
Anger om en UriTemplate är strukturellt likvärdig med en annan. |
| Match(Uri, Uri) |
Försöker matcha en Uri med en UriTemplate. |
| MemberwiseClone() |
Skapar en ytlig kopia av den aktuella Object. (Ärvd från Object) |
| ToString() |
Returnerar en strängrepresentation av instansen UriTemplate . |