System, espace de noms


Bibliothèque de classes .NET Framework
UriTemplate, classe

Mise à jour : novembre 2007

Classe représentant un modèle URI (Uniform Resource Identifier).

Espace de noms :  System
Assembly :  System.ServiceModel.Web (dans System.ServiceModel.Web.dll)
Syntaxe

Visual Basic (Déclaration)
Public Class UriTemplate
Visual Basic (Utilisation)
Dim instance As UriTemplate
C#
public class UriTemplate
VisualC++
public ref class UriTemplate
J#
public class UriTemplate
JScript
public class UriTemplate
Notes

Un modèle URI vous permet de définir un ensemble d'URI structurellement semblables. Les modèles sont composés de deux parties : un chemin d'accès et une requête. Un chemin d'accès est constitué d'une série de segments délimités par une barre oblique (/). Chaque segment peut avoir une valeur littérale, une valeur variable (écrite entre accolades [{}], avec obligation de correspondre au contenu exact d'un segment) ou un caractère générique (un astérisque [*] qui correspond au reste du chemin d'accès). L'expression de requête peut être entièrement omise. Si elle est présente, elle spécifie une série non triée de paires nom/valeur. Les éléments de l'expression de requête peuvent être des paires littérales (? x=2) ou des paires variables (? x = {val}). Les valeurs non couplées ne sont pas autorisées. Les exemples suivants présentent des chaînes de modèle valides :

  • "météo/WA/Seattle"

  • "météo/{état}/{ville}"

  • "météo/*"

  • "météo/{état}/{ville}?prévision=aujourd'hui

  • "météo/{état}/{ville}?prévision={aujourd'hui}

Les modèles URI précédents peuvent servir à l'organisation de bulletins météorologiques. Les segments placés entre accolades sont des variables ; tout le reste désigne un littéral. Vous pouvez convertir une instance UriTemplate en un type Uri en remplaçant des variables par des valeurs réelles. Par exemple, prenez le modèle "météo/{état}/{ville}" et insérez des valeurs pour les variables "{état}" et "{ville}". Vous obtenez "météo/WA/Seattle". Vous pouvez évaluer si un URI candidat donné correspond à un modèle URI donné en appelant la méthode Match(Uri, Uri). Vous pouvez également utiliser des instances UriTemplate pour créer un type Uri à partir d'un ensemble de valeurs de variables en appelant la méthode BindByName(Uri, NameValueCollection) ou BindByPosition(Uri, array<String>[]()[]).

Exemples

The following code demonstrates how to create a UriTemplate instance, and bind and match it to a candidate URI.

Visual Basic
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
C#
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]);
    }
}
Hiérarchie d'héritage

System..::.Object
  System..::.UriTemplate
Sécurité des threads

Tous les membres static (Shared en Visual Basic) publics de ce type sont thread-safe. Il n'est pas garanti que les membres d'instance soient thread-safe.
Plateformes

Windows Vista, Windows XP SP2, Windows Server 2003

Le .NET Framework et le .NET Compact Framework ne prennent pas en charge toutes les versions de chaque plateforme. Pour obtenir la liste des versions prises en charge, consultez Configuration requise du .NET Framework.
Informations de version

.NET Framework

Pris en charge dans : 3.5
Voir aussi

Référence

Mots clés :


Page view tracker