Rename ActionDescriptorsCollection
ActionDescriptorsCollection -> ActionDescriptorCollection
This commit is contained in:
parent
9168cd1f37
commit
ff00c07b85
|
|
@ -10,7 +10,7 @@ namespace Microsoft.AspNet.Mvc.ApiExplorer
|
|||
/// <inheritdoc />
|
||||
public class ApiDescriptionGroupCollectionProvider : IApiDescriptionGroupCollectionProvider
|
||||
{
|
||||
private readonly IActionDescriptorsCollectionProvider _actionDescriptorCollectionProvider;
|
||||
private readonly IActionDescriptorCollectionProvider _actionDescriptorCollectionProvider;
|
||||
private readonly IApiDescriptionProvider[] _apiDescriptionProviders;
|
||||
|
||||
private ApiDescriptionGroupCollection _apiDescriptionGroups;
|
||||
|
|
@ -19,13 +19,13 @@ namespace Microsoft.AspNet.Mvc.ApiExplorer
|
|||
/// Creates a new instance of <see cref="ApiDescriptionGroupCollectionProvider"/>.
|
||||
/// </summary>
|
||||
/// <param name="actionDescriptorCollectionProvider">
|
||||
/// The <see cref="IActionDescriptorsCollectionProvider"/>.
|
||||
/// The <see cref="IActionDescriptorCollectionProvider"/>.
|
||||
/// </param>
|
||||
/// <param name="apiDescriptionProviders">
|
||||
/// The <see cref="IEnumerable{IApiDescriptionProvider}}"/>.
|
||||
/// </param>
|
||||
public ApiDescriptionGroupCollectionProvider(
|
||||
IActionDescriptorsCollectionProvider actionDescriptorCollectionProvider,
|
||||
IActionDescriptorCollectionProvider actionDescriptorCollectionProvider,
|
||||
IEnumerable<IApiDescriptionProvider> apiDescriptionProviders)
|
||||
{
|
||||
_actionDescriptorCollectionProvider = actionDescriptorCollectionProvider;
|
||||
|
|
@ -47,7 +47,7 @@ namespace Microsoft.AspNet.Mvc.ApiExplorer
|
|||
}
|
||||
}
|
||||
|
||||
private ApiDescriptionGroupCollection GetCollection(ActionDescriptorsCollection actionDescriptors)
|
||||
private ApiDescriptionGroupCollection GetCollection(ActionDescriptorCollection actionDescriptors)
|
||||
{
|
||||
var context = new ApiDescriptionProviderContext(actionDescriptors.Items);
|
||||
|
||||
|
|
|
|||
|
|
@ -84,7 +84,7 @@ namespace Microsoft.Extensions.DependencyInjection
|
|||
ServiceDescriptor.Transient<IApplicationModelProvider, DefaultApplicationModelProvider>());
|
||||
services.TryAddEnumerable(
|
||||
ServiceDescriptor.Transient<IActionDescriptorProvider, ControllerActionDescriptorProvider>());
|
||||
services.TryAddSingleton<IActionDescriptorsCollectionProvider, DefaultActionDescriptorsCollectionProvider>();
|
||||
services.TryAddSingleton<IActionDescriptorCollectionProvider, DefaultActionDescriptorCollectionProvider>();
|
||||
|
||||
//
|
||||
// Action Selection
|
||||
|
|
|
|||
|
|
@ -10,14 +10,14 @@ namespace Microsoft.AspNet.Mvc.Infrastructure
|
|||
/// <summary>
|
||||
/// A cached collection of <see cref="ActionDescriptor" />.
|
||||
/// </summary>
|
||||
public class ActionDescriptorsCollection
|
||||
public class ActionDescriptorCollection
|
||||
{
|
||||
/// <summary>
|
||||
/// Initializes a new instance of the <see cref="ActionDescriptorsCollection"/>.
|
||||
/// Initializes a new instance of the <see cref="ActionDescriptorCollection"/>.
|
||||
/// </summary>
|
||||
/// <param name="items">The result of action discovery</param>
|
||||
/// <param name="version">The unique version of discovered actions.</param>
|
||||
public ActionDescriptorsCollection(IReadOnlyList<ActionDescriptor> items, int version)
|
||||
public ActionDescriptorCollection(IReadOnlyList<ActionDescriptor> items, int version)
|
||||
{
|
||||
if (items == null)
|
||||
{
|
||||
|
|
@ -10,19 +10,19 @@ using Microsoft.Extensions.DependencyInjection;
|
|||
namespace Microsoft.AspNet.Mvc.Infrastructure
|
||||
{
|
||||
/// <summary>
|
||||
/// Default implementation for ActionDescriptors.
|
||||
/// Default implementation of <see cref="IActionDescriptorCollectionProvider"/>.
|
||||
/// This implementation caches the results at first call, and is not responsible for updates.
|
||||
/// </summary>
|
||||
public class DefaultActionDescriptorsCollectionProvider : IActionDescriptorsCollectionProvider
|
||||
public class DefaultActionDescriptorCollectionProvider : IActionDescriptorCollectionProvider
|
||||
{
|
||||
private readonly IServiceProvider _serviceProvider;
|
||||
private ActionDescriptorsCollection _collection;
|
||||
private ActionDescriptorCollection _collection;
|
||||
|
||||
/// <summary>
|
||||
/// Initializes a new instance of the <see cref="DefaultActionDescriptorsCollectionProvider" /> class.
|
||||
/// Initializes a new instance of the <see cref="DefaultActionDescriptorCollectionProvider" /> class.
|
||||
/// </summary>
|
||||
/// <param name="serviceProvider">The application IServiceProvider.</param>
|
||||
public DefaultActionDescriptorsCollectionProvider(IServiceProvider serviceProvider)
|
||||
public DefaultActionDescriptorCollectionProvider(IServiceProvider serviceProvider)
|
||||
{
|
||||
_serviceProvider = serviceProvider;
|
||||
}
|
||||
|
|
@ -30,7 +30,7 @@ namespace Microsoft.AspNet.Mvc.Infrastructure
|
|||
/// <summary>
|
||||
/// Returns a cached collection of <see cref="ActionDescriptor" />.
|
||||
/// </summary>
|
||||
public ActionDescriptorsCollection ActionDescriptors
|
||||
public ActionDescriptorCollection ActionDescriptors
|
||||
{
|
||||
get
|
||||
{
|
||||
|
|
@ -43,7 +43,7 @@ namespace Microsoft.AspNet.Mvc.Infrastructure
|
|||
}
|
||||
}
|
||||
|
||||
private ActionDescriptorsCollection GetCollection()
|
||||
private ActionDescriptorCollection GetCollection()
|
||||
{
|
||||
var providers =
|
||||
_serviceProvider.GetServices<IActionDescriptorProvider>()
|
||||
|
|
@ -62,7 +62,7 @@ namespace Microsoft.AspNet.Mvc.Infrastructure
|
|||
providers[i].OnProvidersExecuted(context);
|
||||
}
|
||||
|
||||
return new ActionDescriptorsCollection(
|
||||
return new ActionDescriptorCollection(
|
||||
new ReadOnlyCollection<ActionDescriptor>(context.Results), 0);
|
||||
}
|
||||
}
|
||||
|
|
@ -10,16 +10,16 @@ namespace Microsoft.AspNet.Mvc.Infrastructure
|
|||
/// The default implementation, does not update the cache, it is up to the user
|
||||
/// to create or use an implementation that can update the available actions in
|
||||
/// the application. The implementor is also responsible for updating the
|
||||
/// <see cref="ActionDescriptorsCollection.Version"/> in a thread safe way.
|
||||
/// <see cref="ActionDescriptorCollection.Version"/> in a thread safe way.
|
||||
///
|
||||
/// Default consumers of this service, are aware of the version and will recache
|
||||
/// data as appropriate, but rely on the version being unique.
|
||||
/// </remarks>
|
||||
public interface IActionDescriptorsCollectionProvider
|
||||
public interface IActionDescriptorCollectionProvider
|
||||
{
|
||||
/// <summary>
|
||||
/// Returns the current cached <see cref="ActionDescriptorsCollection"/>
|
||||
/// Returns the current cached <see cref="ActionDescriptorCollection"/>
|
||||
/// </summary>
|
||||
ActionDescriptorsCollection ActionDescriptors { get; }
|
||||
ActionDescriptorCollection ActionDescriptors { get; }
|
||||
}
|
||||
}
|
||||
|
|
@ -6,7 +6,6 @@ using System.Collections.Generic;
|
|||
#if NET451
|
||||
using System.ComponentModel;
|
||||
#endif
|
||||
using System.Diagnostics;
|
||||
using Microsoft.AspNet.Mvc.Abstractions;
|
||||
using Microsoft.AspNet.Mvc.Infrastructure;
|
||||
using Microsoft.AspNet.Routing;
|
||||
|
|
@ -22,8 +21,8 @@ namespace Microsoft.AspNet.Mvc.Routing
|
|||
/// <summary>
|
||||
/// Creates a new <see cref="ActionSelectionDecisionTree"/>.
|
||||
/// </summary>
|
||||
/// <param name="actions">The <see cref="ActionDescriptorsCollection"/>.</param>
|
||||
public ActionSelectionDecisionTree(ActionDescriptorsCollection actions)
|
||||
/// <param name="actions">The <see cref="ActionDescriptorCollection"/>.</param>
|
||||
public ActionSelectionDecisionTree(ActionDescriptorCollection actions)
|
||||
{
|
||||
Version = actions.Version;
|
||||
|
||||
|
|
|
|||
|
|
@ -10,19 +10,19 @@ namespace Microsoft.AspNet.Mvc.Routing
|
|||
/// <inheritdoc />
|
||||
public class ActionSelectorDecisionTreeProvider : IActionSelectorDecisionTreeProvider
|
||||
{
|
||||
private readonly IActionDescriptorsCollectionProvider _actionDescriptorsCollectionProvider;
|
||||
private readonly IActionDescriptorCollectionProvider _actionDescriptorCollectionProvider;
|
||||
private ActionSelectionDecisionTree _decisionTree;
|
||||
|
||||
/// <summary>
|
||||
/// Creates a new <see cref="ActionSelectorDecisionTreeProvider"/>.
|
||||
/// </summary>
|
||||
/// <param name="actionDescriptorsCollectionProvider">
|
||||
/// The <see cref="IActionDescriptorsCollectionProvider"/>.
|
||||
/// <param name="actionDescriptorCollectionProvider">
|
||||
/// The <see cref="IActionDescriptorCollectionProvider"/>.
|
||||
/// </param>
|
||||
public ActionSelectorDecisionTreeProvider(
|
||||
IActionDescriptorsCollectionProvider actionDescriptorsCollectionProvider)
|
||||
IActionDescriptorCollectionProvider actionDescriptorCollectionProvider)
|
||||
{
|
||||
_actionDescriptorsCollectionProvider = actionDescriptorsCollectionProvider;
|
||||
_actionDescriptorCollectionProvider = actionDescriptorCollectionProvider;
|
||||
}
|
||||
|
||||
/// <inheritdoc />
|
||||
|
|
@ -30,13 +30,13 @@ namespace Microsoft.AspNet.Mvc.Routing
|
|||
{
|
||||
get
|
||||
{
|
||||
var descriptors = _actionDescriptorsCollectionProvider.ActionDescriptors;
|
||||
var descriptors = _actionDescriptorCollectionProvider.ActionDescriptors;
|
||||
if (descriptors == null)
|
||||
{
|
||||
throw new InvalidOperationException(
|
||||
Resources.FormatPropertyOfTypeCannotBeNull(
|
||||
"ActionDescriptors",
|
||||
_actionDescriptorsCollectionProvider.GetType()));
|
||||
_actionDescriptorCollectionProvider.GetType()));
|
||||
}
|
||||
|
||||
if (_decisionTree == null || descriptors.Version != _decisionTree.Version)
|
||||
|
|
|
|||
|
|
@ -21,7 +21,7 @@ namespace Microsoft.AspNet.Mvc.Routing
|
|||
public class AttributeRoute : IRouter
|
||||
{
|
||||
private readonly IRouter _target;
|
||||
private readonly IActionDescriptorsCollectionProvider _actionDescriptorsCollectionProvider;
|
||||
private readonly IActionDescriptorCollectionProvider _actionDescriptorCollectionProvider;
|
||||
private readonly IInlineConstraintResolver _constraintResolver;
|
||||
private readonly ObjectPool<UriBuildingContext> _contextPool;
|
||||
private readonly UrlEncoder _urlEncoder;
|
||||
|
|
@ -31,7 +31,7 @@ namespace Microsoft.AspNet.Mvc.Routing
|
|||
|
||||
public AttributeRoute(
|
||||
IRouter target,
|
||||
IActionDescriptorsCollectionProvider actionDescriptorsCollectionProvider,
|
||||
IActionDescriptorCollectionProvider actionDescriptorCollectionProvider,
|
||||
IInlineConstraintResolver constraintResolver,
|
||||
ObjectPool<UriBuildingContext> contextPool,
|
||||
UrlEncoder urlEncoder,
|
||||
|
|
@ -42,9 +42,9 @@ namespace Microsoft.AspNet.Mvc.Routing
|
|||
throw new ArgumentNullException(nameof(target));
|
||||
}
|
||||
|
||||
if (actionDescriptorsCollectionProvider == null)
|
||||
if (actionDescriptorCollectionProvider == null)
|
||||
{
|
||||
throw new ArgumentNullException(nameof(actionDescriptorsCollectionProvider));
|
||||
throw new ArgumentNullException(nameof(actionDescriptorCollectionProvider));
|
||||
}
|
||||
|
||||
if (constraintResolver == null)
|
||||
|
|
@ -68,7 +68,7 @@ namespace Microsoft.AspNet.Mvc.Routing
|
|||
}
|
||||
|
||||
_target = target;
|
||||
_actionDescriptorsCollectionProvider = actionDescriptorsCollectionProvider;
|
||||
_actionDescriptorCollectionProvider = actionDescriptorCollectionProvider;
|
||||
_constraintResolver = constraintResolver;
|
||||
_contextPool = contextPool;
|
||||
_urlEncoder = urlEncoder;
|
||||
|
|
@ -91,7 +91,7 @@ namespace Microsoft.AspNet.Mvc.Routing
|
|||
|
||||
private TreeRouter GetTreeRouter()
|
||||
{
|
||||
var actions = _actionDescriptorsCollectionProvider.ActionDescriptors;
|
||||
var actions = _actionDescriptorCollectionProvider.ActionDescriptors;
|
||||
|
||||
// This is a safe-race. We'll never set router back to null after initializing
|
||||
// it on startup.
|
||||
|
|
@ -103,7 +103,7 @@ namespace Microsoft.AspNet.Mvc.Routing
|
|||
return _router;
|
||||
}
|
||||
|
||||
private TreeRouter BuildRoute(ActionDescriptorsCollection actions)
|
||||
private TreeRouter BuildRoute(ActionDescriptorCollection actions)
|
||||
{
|
||||
var routeBuilder = new TreeRouteBuilder(_target, _loggerFactory);
|
||||
var routeInfos = GetRouteInfos(_constraintResolver, actions.Items);
|
||||
|
|
|
|||
|
|
@ -32,7 +32,7 @@ namespace Microsoft.AspNet.Mvc.Routing
|
|||
throw new ArgumentNullException(nameof(services));
|
||||
}
|
||||
|
||||
var actionDescriptorProvider = services.GetRequiredService<IActionDescriptorsCollectionProvider>();
|
||||
var actionDescriptorProvider = services.GetRequiredService<IActionDescriptorCollectionProvider>();
|
||||
var inlineConstraintResolver = services.GetRequiredService<IInlineConstraintResolver>();
|
||||
var pool = services.GetRequiredService<ObjectPool<UriBuildingContext>>();
|
||||
var urlEncoder = services.GetRequiredService<UrlEncoder>();
|
||||
|
|
|
|||
|
|
@ -14,7 +14,7 @@ namespace Microsoft.AspNet.Mvc.Routing
|
|||
{
|
||||
/// <summary>
|
||||
/// Gets the version. The same as the value of
|
||||
/// <see cref="Infrastructure.ActionDescriptorsCollection.Version"/>.
|
||||
/// <see cref="Infrastructure.ActionDescriptorCollection.Version"/>.
|
||||
/// </summary>
|
||||
int Version { get; }
|
||||
|
||||
|
|
|
|||
|
|
@ -5,12 +5,12 @@ namespace Microsoft.AspNet.Mvc.Routing
|
|||
{
|
||||
/// <summary>
|
||||
/// Stores an <see cref="ActionSelectionDecisionTree"/> for the current value of
|
||||
/// <see cref="Infrastructure.IActionDescriptorsCollectionProvider.ActionDescriptors"/>.
|
||||
/// <see cref="Infrastructure.IActionDescriptorCollectionProvider.ActionDescriptors"/>.
|
||||
/// </summary>
|
||||
public interface IActionSelectorDecisionTreeProvider
|
||||
{
|
||||
/// <summary>
|
||||
/// Gets the <see cref="Infrastructure.IActionDescriptorsCollectionProvider"/>.
|
||||
/// Gets the <see cref="Infrastructure.IActionDescriptorCollectionProvider"/>.
|
||||
/// </summary>
|
||||
IActionSelectionDecisionTree DecisionTree
|
||||
{
|
||||
|
|
|
|||
|
|
@ -64,23 +64,23 @@ namespace Microsoft.AspNet.Mvc.Routing
|
|||
|
||||
private string[] GetAndCacheAllMatchingValues(string routeKey, HttpContext httpContext)
|
||||
{
|
||||
var actionDescriptors = GetAndValidateActionDescriptorsCollection(httpContext);
|
||||
var actionDescriptors = GetAndValidateActionDescriptorCollection(httpContext);
|
||||
var version = actionDescriptors.Version;
|
||||
var valuesCollection = _cachedValuesCollection;
|
||||
|
||||
if (valuesCollection == null ||
|
||||
version != valuesCollection.Version)
|
||||
{
|
||||
var routeValueCollection = actionDescriptors
|
||||
.Items
|
||||
.Select(ad => ad.RouteConstraints
|
||||
.FirstOrDefault(
|
||||
c => c.RouteKey == routeKey &&
|
||||
c.KeyHandling == RouteKeyHandling.RequireKey))
|
||||
.Where(rc => rc != null)
|
||||
.Select(rc => rc.RouteValue)
|
||||
.Distinct()
|
||||
.ToArray();
|
||||
var routeValueCollection =
|
||||
actionDescriptors
|
||||
.Items
|
||||
.Select(ad => ad.RouteConstraints.FirstOrDefault(
|
||||
c => c.RouteKey == routeKey &&
|
||||
c.KeyHandling == RouteKeyHandling.RequireKey))
|
||||
.Where(rc => rc != null)
|
||||
.Select(rc => rc.RouteValue)
|
||||
.Distinct()
|
||||
.ToArray();
|
||||
|
||||
valuesCollection = new RouteValuesCollection(version, routeValueCollection);
|
||||
_cachedValuesCollection = valuesCollection;
|
||||
|
|
@ -89,10 +89,10 @@ namespace Microsoft.AspNet.Mvc.Routing
|
|||
return _cachedValuesCollection.Items;
|
||||
}
|
||||
|
||||
private static ActionDescriptorsCollection GetAndValidateActionDescriptorsCollection(HttpContext httpContext)
|
||||
private static ActionDescriptorCollection GetAndValidateActionDescriptorCollection(HttpContext httpContext)
|
||||
{
|
||||
var provider = httpContext.RequestServices
|
||||
.GetRequiredService<IActionDescriptorsCollectionProvider>();
|
||||
var services = httpContext.RequestServices;
|
||||
var provider = services.GetRequiredService<IActionDescriptorCollectionProvider>();
|
||||
var descriptors = provider.ActionDescriptors;
|
||||
|
||||
if (descriptors == null)
|
||||
|
|
|
|||
|
|
@ -518,9 +518,9 @@ namespace Microsoft.AspNet.Mvc.Infrastructure
|
|||
|
||||
serviceContainer.AddSingleton(typeof(IEnumerable<IActionDescriptorProvider>), list);
|
||||
|
||||
var actionDescriptorsCollectionProvider = new DefaultActionDescriptorsCollectionProvider(
|
||||
var actionDescriptorCollectionProvider = new DefaultActionDescriptorCollectionProvider(
|
||||
serviceContainer.BuildServiceProvider());
|
||||
var decisionTreeProvider = new ActionSelectorDecisionTreeProvider(actionDescriptorsCollectionProvider);
|
||||
var decisionTreeProvider = new ActionSelectorDecisionTreeProvider(actionDescriptorCollectionProvider);
|
||||
|
||||
var actionConstraintProviders = new[]
|
||||
{
|
||||
|
|
@ -599,10 +599,10 @@ namespace Microsoft.AspNet.Mvc.Infrastructure
|
|||
{
|
||||
loggerFactory = loggerFactory ?? NullLoggerFactory.Instance;
|
||||
|
||||
var actionProvider = new Mock<IActionDescriptorsCollectionProvider>(MockBehavior.Strict);
|
||||
var actionProvider = new Mock<IActionDescriptorCollectionProvider>(MockBehavior.Strict);
|
||||
|
||||
actionProvider
|
||||
.Setup(p => p.ActionDescriptors).Returns(new ActionDescriptorsCollection(actions, 0));
|
||||
.Setup(p => p.ActionDescriptors).Returns(new ActionDescriptorCollection(actions, 0));
|
||||
|
||||
var decisionTreeProvider = new ActionSelectorDecisionTreeProvider(actionProvider.Object);
|
||||
|
||||
|
|
|
|||
|
|
@ -64,17 +64,17 @@ namespace Microsoft.AspNet.Mvc.Routing
|
|||
},
|
||||
};
|
||||
|
||||
var actionDescriptorsProvider = new Mock<IActionDescriptorsCollectionProvider>(MockBehavior.Strict);
|
||||
actionDescriptorsProvider
|
||||
var actionDescriptorProvider = new Mock<IActionDescriptorCollectionProvider>(MockBehavior.Strict);
|
||||
actionDescriptorProvider
|
||||
.SetupGet(ad => ad.ActionDescriptors)
|
||||
.Returns(new ActionDescriptorsCollection(actionDescriptors, version: 1));
|
||||
.Returns(new ActionDescriptorCollection(actionDescriptors, version: 1));
|
||||
|
||||
var policy = new UriBuilderContextPooledObjectPolicy(new UrlTestEncoder());
|
||||
var pool = new DefaultObjectPool<UriBuildingContext>(policy);
|
||||
|
||||
var route = new AttributeRoute(
|
||||
handler.Object,
|
||||
actionDescriptorsProvider.Object,
|
||||
actionDescriptorProvider.Object,
|
||||
Mock.Of<IInlineConstraintResolver>(),
|
||||
pool,
|
||||
new UrlTestEncoder(),
|
||||
|
|
@ -103,9 +103,9 @@ namespace Microsoft.AspNet.Mvc.Routing
|
|||
|
||||
// Arrange 2 - remove the action and update the collection
|
||||
actionDescriptors.RemoveAt(1);
|
||||
actionDescriptorsProvider
|
||||
actionDescriptorProvider
|
||||
.SetupGet(ad => ad.ActionDescriptors)
|
||||
.Returns(new ActionDescriptorsCollection(actionDescriptors, version: 2));
|
||||
.Returns(new ActionDescriptorCollection(actionDescriptors, version: 2));
|
||||
|
||||
context = new RouteContext(httpContext);
|
||||
|
||||
|
|
|
|||
|
|
@ -180,9 +180,9 @@ namespace Microsoft.AspNet.Mvc.Routing
|
|||
|
||||
private static IServiceProvider CreateServices(params ActionDescriptor[] actions)
|
||||
{
|
||||
var collection = new ActionDescriptorsCollection(actions, version: 0);
|
||||
var collection = new ActionDescriptorCollection(actions, version: 0);
|
||||
|
||||
var actionDescriptorProvider = new Mock<IActionDescriptorsCollectionProvider>();
|
||||
var actionDescriptorProvider = new Mock<IActionDescriptorCollectionProvider>();
|
||||
actionDescriptorProvider
|
||||
.Setup(a => a.ActionDescriptors)
|
||||
.Returns(collection);
|
||||
|
|
|
|||
|
|
@ -130,13 +130,13 @@ namespace Microsoft.AspNet.Mvc.Routing
|
|||
[Theory]
|
||||
[InlineData(RouteDirection.IncomingRequest)]
|
||||
[InlineData(RouteDirection.UrlGeneration)]
|
||||
public void ActionDescriptorsCollection_SettingNullValue_Throws(RouteDirection direction)
|
||||
public void ActionDescriptorCollection_SettingNullValue_Throws(RouteDirection direction)
|
||||
{
|
||||
// Arrange
|
||||
var actionDescriptorCollectionProvider = Mock.Of<IActionDescriptorsCollectionProvider>();
|
||||
var actionDescriptorCollectionProvider = Mock.Of<IActionDescriptorCollectionProvider>();
|
||||
var httpContext = new Mock<HttpContext>();
|
||||
httpContext
|
||||
.Setup(o => o.RequestServices.GetService(typeof(IActionDescriptorsCollectionProvider)))
|
||||
.Setup(o => o.RequestServices.GetService(typeof(IActionDescriptorCollectionProvider)))
|
||||
.Returns(actionDescriptorCollectionProvider);
|
||||
|
||||
// Act & Assert
|
||||
|
|
@ -175,8 +175,8 @@ namespace Microsoft.AspNet.Mvc.Routing
|
|||
.Returns(new[] { actionProvider.Object });
|
||||
|
||||
context.Setup(o => o.RequestServices
|
||||
.GetService(typeof(IActionDescriptorsCollectionProvider)))
|
||||
.Returns(new DefaultActionDescriptorsCollectionProvider(context.Object.RequestServices));
|
||||
.GetService(typeof(IActionDescriptorCollectionProvider)))
|
||||
.Returns(new DefaultActionDescriptorCollectionProvider(context.Object.RequestServices));
|
||||
return context.Object;
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue