UriTemplate Classe

Definizione

Classe che rappresenta un modello URI (Uniform Resource Identifier).

public ref class UriTemplate
public class UriTemplate
type UriTemplate = class
Public Class UriTemplate
Ereditarietà
UriTemplate

Esempio

Il codice seguente illustra come creare un'istanza UriTemplate di e associarla e associarla a un URI candidato.

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

Commenti

Un modello URI consente di definire un set di URI strutturalmente simili. I modelli sono costituiti da due parti, un percorso e una query. Un percorso è costituito da una serie di segmenti delimitati da una barra (/). Ogni segmento può avere un valore letterale, un valore variabile (scritto all'interno di parentesi graffe [{ }], vincolato a corrispondere al contenuto di esattamente un segmento) o un carattere jolly (scritto come asterisco [*], che corrisponde al "resto del percorso"), che deve essere visualizzato alla fine del percorso. L'espressione di query può essere omessa completamente. Se presente, specifica una serie non ordinata di coppie nome/valore. Gli elementi dell'espressione di query possono essere coppie letterali (?x=2) o coppie di variabili (?x={val}). I valori non abbinati non sono consentiti. Gli esempi seguenti mostrano stringhe di modello valide:

  • "weather/WA/Seattle"

  • "weather/{state}/{city}"

  • "weather/*"

  • "weather/{state}/{city}?forecast=today

  • "weather/{state}/{city}?forecast={day}

I modelli di URI precedenti potrebbero essere usati per organizzare i report meteo. I segmenti racchiusi tra parentesi graffe sono variabili, tutto il resto è un valore letterale. È possibile convertire un'istanza UriTemplate in un Uri sostituendo le variabili con valori effettivi. Ad esempio, prendendo il modello "weather/{state}/{city}" e inserendo i valori per le variabili "{state}" e "{city}" fornisce "weather/WA/Seattle". Dato un URI candidato, è possibile verificare se corrisponde a un modello URI specificato chiamando Match(Uri, Uri). È anche possibile usare UriTemplate le istanze per creare un Uri oggetto da un set di valori di variabile chiamando BindByName(Uri, NameValueCollection) o BindByPosition(Uri, String[]).

Costruttori

Nome Descrizione
UriTemplate(String, Boolean, IDictionary<String,String>)

Inizializza una nuova istanza della classe UriTemplate.

UriTemplate(String, Boolean)

Inizializza una nuova istanza della classe UriTemplate.

UriTemplate(String, IDictionary<String,String>)

Inizializza una nuova istanza della classe UriTemplate.

UriTemplate(String)

Inizializza una nuova istanza della UriTemplate classe con la stringa di modello specificata.

Proprietà

Nome Descrizione
Defaults

Ottiene una raccolta di coppie nome/valore per i valori di parametro predefiniti.

IgnoreTrailingSlash

Specifica se le barre finali "/" nel modello devono essere ignorate quando corrispondono agli URI candidati.

PathSegmentVariableNames

Ottiene una raccolta di nomi di variabili utilizzati all'interno dei segmenti di percorso nel modello.

QueryValueVariableNames

Ottiene una raccolta di nomi di variabili utilizzati all'interno della stringa di query nel modello.

Metodi

Nome Descrizione
BindByName(Uri, IDictionary<String,String>, Boolean)

Crea un nuovo URI dal modello e dalla raccolta di parametri.

BindByName(Uri, IDictionary<String,String>)

Crea un nuovo URI dal modello e dalla raccolta di parametri.

BindByName(Uri, NameValueCollection, Boolean)

Crea un nuovo URI dal modello e dalla raccolta di parametri.

BindByName(Uri, NameValueCollection)

Crea un nuovo URI dal modello e dalla raccolta di parametri.

BindByPosition(Uri, String[])

Crea un nuovo URI dal modello e una matrice di valori di parametro.

Equals(Object)

Determina se l'oggetto specificato è uguale all'oggetto corrente.

(Ereditato da Object)
GetHashCode()

Funge da funzione hash predefinita.

(Ereditato da Object)
GetType()

Ottiene il Type dell'istanza corrente.

(Ereditato da Object)
IsEquivalentTo(UriTemplate)

Indica se un oggetto UriTemplate è strutturalmente equivalente a un altro.

Match(Uri, Uri)

Tenta di associare un Uri oggetto a un oggetto UriTemplate.

MemberwiseClone()

Crea una copia superficiale del Objectcorrente.

(Ereditato da Object)
ToString()

Restituisce una rappresentazione di stringa dell'istanza UriTemplate .

Si applica a