UriTemplate Classe

Definizione

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

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

Esempio

Nel codice seguente viene illustrato come creare un'istanza di UriTemplate e come associarla e confrontarla 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 composti di 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 tra parentesi graffe [{}], che deve corrispondere al contenuto di un solo 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 interamente omessa. 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 variabili (?x={valore}). Non è consentito usare valori non abbinati. Le stringhe seguenti rappresentano esempi validi di stringhe di modello:

  • "previsioni/CA/Napoli"

  • "previsioni/{regione}/{città}"

  • "previsioni/*"

  • "previsioni/{regione}/{città}?previsioni=oggi"

  • "previsioni/{regione}/{città}?previsioni={giorno}"

I modelli URI appena elencati potrebbero essere utilizzati come struttura su cui basare le previsioni del tempo. I segmenti racchiusi fra parentesi graffe sono variabili. Gli altri segmenti rappresentano valori letterali. È possibile convertire un'istanza della classe UriTemplate in un oggetto Uri sostituendo le variabili con valori effettivi. Ad esempio, se nel modello "previsioni/{regione}/{città}" sostituiamo valori effettivi alle variabili "{regione}" e "{città}" otteniamo l'URI "previsioni/CA/Napoli". Per verificare se un determinato URI candidato corrisponde a un modello URI specificato è possibile chiamare il metodo Match(Uri, Uri). Le istanze della classe UriTemplate possono inoltre essere utilizzate per creare un oggetto Uri a partire da un set di valori variabili. A tale scopo, chiamare il metodo BindByName(Uri, NameValueCollection) o BindByPosition(Uri, String[]).

Costruttori

UriTemplate(String)

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

UriTemplate(String, Boolean)

Inizializza una nuova istanza della classe UriTemplate.

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

Inizializza una nuova istanza della classe UriTemplate.

UriTemplate(String, IDictionary<String,String>)

Inizializza una nuova istanza della classe UriTemplate.

Proprietà

Defaults

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

IgnoreTrailingSlash

Specifica se le barre finali "/" presenti nel modello devono essere ignorate quando si creano corrispondenze con gli URI candidati.

PathSegmentVariableNames

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

QueryValueVariableNames

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

Metodi

BindByName(Uri, IDictionary<String,String>)

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

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

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

BindByName(Uri, NameValueCollection)

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

BindByName(Uri, NameValueCollection, Boolean)

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

BindByPosition(Uri, String[])

Crea un nuovo URI a partire dal modello e da 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 l'oggetto Type dell'istanza corrente.

(Ereditato da Object)
IsEquivalentTo(UriTemplate)

Indica se un modello UriTemplate è strutturalmente simile a un altro.

Match(Uri, Uri)

Tenta di creare una corrispondenza fra un oggetto Uri e un oggetto UriTemplate.

MemberwiseClone()

Crea una copia superficiale dell'oggetto Object corrente.

(Ereditato da Object)
ToString()

Restituisce una rappresentazione di stringa dell'istanza della classe UriTemplate.

Si applica a