Comparteix a través de


UriTemplate Clase

Definición

Una clase que representa una plantilla de identificador uniforme de recursos (URI).

public ref class UriTemplate
public class UriTemplate
type UriTemplate = class
Public Class UriTemplate
Herencia
UriTemplate

Ejemplos

El código siguiente muestra cómo crear una instancia de UriTemplate, cómo enlazarla con un URI candidato y hacerla coincidir con él.

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

Comentarios

Una plantilla URI le permite definir un conjunto de URI estructuralmente similares. Las plantillas se componen de dos partes, una ruta de acceso y una consulta. Una ruta de acceso consiste en una serie de segmentos delimitados por una barra diagonal (/). Cada segmento puede tener un valor literal, un valor variable (escrito entre llaves [{ }], necesariamente debe coincidir con el contenido exacto de un segmento), o un carácter comodín (se escribe como un asterisco [*] y coincide con "el resto de la ruta de acceso"), que debe aparecer al final de la ruta de acceso. La expresión de consulta puede omitirse completamente. Si está presente, especifica una serie no ordenada de pares nombre/valor. Los elementos de la expresión de consulta pueden ser pares literales (?x=2) o pares variables (?x = {val}). No se permiten los valores no emparejados. Los ejemplos siguientes muestran las cadenas de plantilla válidas:

  • "tiempo/WA/Seattle"

  • "tiempo/{estado}/{ciudad}"

  • "tiempo/*"

  • "tiempo/{estado}/{ciudad}?previsión=hoy

  • "tiempo/{estado}/{ciudad}?previsión={día}

Las plantillas URI anteriores se podrían utilizar para organizar informes del tiempo. Los segmentos encerrados en llaves son las variables, todo lo demás es un literal. Puede convertir una instancia UriTemplate en Uri reemplazando las variables con valores reales. Por ejemplo, tomando la plantilla "tiempo/{estado}/{ciudad}" y metiendo los valores para las variables "{estado}" y "{ciudad}" le da "tiempo/WA/Seattle". Dado un URI de candidato, puede probar si coincide con una plantilla URI determinada llamando a Match(Uri, Uri). También puede utilizar instancias UriTemplate para crear Uri a partir de un conjunto de valores variables llamando BindByName(Uri, NameValueCollection) o BindByPosition(Uri, String[]).

Constructores

UriTemplate(String)

Inicializa una instancia nueva de la clase UriTemplate con la cadena de plantilla especificada.

UriTemplate(String, Boolean)

Inicializa una nueva instancia de la clase UriTemplate.

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

Inicializa una nueva instancia de la clase UriTemplate.

UriTemplate(String, IDictionary<String,String>)

Inicializa una nueva instancia de la clase UriTemplate.

Propiedades

Defaults

Obtiene una colección de pares de nombre-valor para cualquier valor de parámetro predeterminado.

IgnoreTrailingSlash

Especifica si las barras diagonales "/" finales de la plantilla se deben ignorar cuando coincidan con los URI candidatos.

PathSegmentVariableNames

Obtiene una colección de nombres de variable utilizados dentro de los segmentos de la ruta de acceso de la plantilla.

QueryValueVariableNames

Obtiene una colección de nombres de variable utilizada dentro de la cadena de consulta de la plantilla.

Métodos

BindByName(Uri, IDictionary<String,String>)

Crea un nuevo URI a partir de la plantilla y la colección de parámetros.

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

Crea un nuevo URI a partir de la plantilla y la colección de parámetros.

BindByName(Uri, NameValueCollection)

Crea un nuevo URI a partir de la plantilla y la colección de parámetros.

BindByName(Uri, NameValueCollection, Boolean)

Crea un nuevo URI a partir de la plantilla y la colección de parámetros.

BindByPosition(Uri, String[])

Crea un nuevo URI a partir de la plantilla y una matriz de valores de parámetro.

Equals(Object)

Determina si el objeto especificado es igual que el objeto actual.

(Heredado de Object)
GetHashCode()

Sirve como la función hash predeterminada.

(Heredado de Object)
GetType()

Obtiene el Type de la instancia actual.

(Heredado de Object)
IsEquivalentTo(UriTemplate)

Indica si un UriTemplate es estructuralmente equivalente a otro.

Match(Uri, Uri)

Intenta hacer coincidir un Uri con un UriTemplate.

MemberwiseClone()

Crea una copia superficial del Object actual.

(Heredado de Object)
ToString()

Devuelve la representación de la cadena de la instancia UriTemplate.

Se aplica a