如果我可以访问 Uri 和它所基于的 UriTemplate,发现替换模板中参数的值的最巧妙方法是什么?
例如,如果我知道:
var uriTemplate = new UriTemplate("/product-catalogue/categories/{categoryName}/products/{product-name}");
var uri = new Uri("/product-catalogue/categories/foo/products/bar");
是否有内置方法让我发现 categoryName = "foo"和 productName = "bar"?
我希望找到这样的方法:
var parameterValues = uriTemplate.GetParameterValues(uri);
parameterValues 在哪里:
{ { "categoryName", "foo" }, { "productName", "bar" }}
显然,我可以自己编写,但我想知道框架中是否有我可以使用的东西。
谢谢
桑迪
最佳答案
您可以调用Match uriTemplate
实例上的方法并使用返回的 UriTemplateMatch访问参数值的实例:
var uriTemplate = new UriTemplate("/product-catalogue/categories/{categoryName}/products/{product-name}");
var uri = new Uri("http://www.localhost/product-catalogue/categories/foo/products/bar");
var baseUri = new Uri("http://www.localhost");
var match = uriTemplate.Match(baseUri, uri);
foreach (string variableName in match.BoundVariables.Keys)
{
Console.WriteLine("{0}: {1}", variableName, match.BoundVariables[variableName]);
}
输出
CATEGORYNAME: foo
PRODUCT-NAME: bar
关于c# - 给定一个 Uri 和一个 UriTemplate,如何获取模板参数值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7546043/