// Copyright (c) .NET Foundation. All rights reserved.
// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
using System.Collections.Generic;
using System.Net.Http;
namespace System.Web.Http.Routing
{
///
/// Route that generates a virtual path, but does not claim any routes.
/// This can be used with RouteCollectionRoute to provide generation by names.
/// Delegates to an inner route to do actual generation.
///
///
/// Parallel to the MVC implementation of attribute routing in System.Web.Mvc.Routing.LinkGenerationRoute.
///
internal class LinkGenerationRoute : IHttpRoute
{
private readonly IHttpRoute _innerRoute;
public LinkGenerationRoute(IHttpRoute innerRoute)
{
if (innerRoute == null)
{
throw new ArgumentNullException("innerRoute");
}
_innerRoute = innerRoute;
}
public string RouteTemplate
{
get { return _innerRoute.RouteTemplate; }
}
public IDictionary Defaults
{
get { return _innerRoute.Defaults; }
}
public IDictionary Constraints
{
get { return _innerRoute.Constraints; }
}
public IDictionary DataTokens
{
get { return _innerRoute.DataTokens; }
}
public HttpMessageHandler Handler
{
get { return null; }
}
public IHttpRouteData GetRouteData(string virtualPathRoot, HttpRequestMessage request)
{
// Claims no routes
return null;
}
public IHttpVirtualPathData GetVirtualPath(HttpRequestMessage request, IDictionary values)
{
return _innerRoute.GetVirtualPath(request, values);
}
}
}