diff --git a/src/Microsoft.AspNet.Mvc.Core/ControllerActionDescriptor.cs b/src/Microsoft.AspNet.Mvc.Core/ControllerActionDescriptor.cs index 68ba852276..d52005c7a4 100644 --- a/src/Microsoft.AspNet.Mvc.Core/ControllerActionDescriptor.cs +++ b/src/Microsoft.AspNet.Mvc.Core/ControllerActionDescriptor.cs @@ -10,27 +10,21 @@ namespace Microsoft.AspNet.Mvc [DebuggerDisplay("CA {DisplayName}(RC-{RouteConstraints.Count})")] public class ControllerActionDescriptor : ActionDescriptor { - public string ControllerName - { - get - { - return ControllerDescriptor.Name; - } - } + public string ControllerName { get; set; } public MethodInfo MethodInfo { get; set; } - public ControllerDescriptor ControllerDescriptor { get; set; } + public TypeInfo ControllerTypeInfo { get; set; } public override string DisplayName { get { - if (base.DisplayName == null && MethodInfo != null) + if (base.DisplayName == null && ControllerTypeInfo != null && MethodInfo != null) { base.DisplayName = string.Format( "{0}.{1}", - MethodInfo.DeclaringType.FullName, + ControllerTypeInfo.FullName, MethodInfo.Name); } diff --git a/src/Microsoft.AspNet.Mvc.Core/ControllerActionDescriptorBuilder.cs b/src/Microsoft.AspNet.Mvc.Core/ControllerActionDescriptorBuilder.cs index 160d244174..0cff9910c2 100644 --- a/src/Microsoft.AspNet.Mvc.Core/ControllerActionDescriptorBuilder.cs +++ b/src/Microsoft.AspNet.Mvc.Core/ControllerActionDescriptorBuilder.cs @@ -41,12 +41,6 @@ namespace Microsoft.AspNet.Mvc foreach (var controller in application.Controllers) { - var controllerDescriptor = new ControllerDescriptor() - { - ControllerTypeInfo = controller.ControllerType, - Name = controller.ControllerName, - }; - foreach (var action in controller.Actions) { // Controllers with multiple [Route] attributes (or user defined implementation of @@ -58,7 +52,8 @@ namespace Microsoft.AspNet.Mvc foreach (var actionDescriptor in actionDescriptors) { - actionDescriptor.ControllerDescriptor = controllerDescriptor; + actionDescriptor.ControllerName = controller.ControllerName; + actionDescriptor.ControllerTypeInfo = controller.ControllerType; AddApiExplorerInfo(actionDescriptor, action, controller); AddRouteConstraints(actionDescriptor, controller, action); diff --git a/src/Microsoft.AspNet.Mvc.Core/ControllerDescriptor.cs b/src/Microsoft.AspNet.Mvc.Core/ControllerDescriptor.cs deleted file mode 100644 index 4f6283225e..0000000000 --- a/src/Microsoft.AspNet.Mvc.Core/ControllerDescriptor.cs +++ /dev/null @@ -1,14 +0,0 @@ -// Copyright (c) Microsoft Open Technologies, Inc. All rights reserved. -// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. - -using System.Reflection; - -namespace Microsoft.AspNet.Mvc -{ - public class ControllerDescriptor - { - public string Name { get; set; } - - public TypeInfo ControllerTypeInfo { get; set; } - } -} diff --git a/src/Microsoft.AspNet.Mvc.Core/DefaultControllerFactory.cs b/src/Microsoft.AspNet.Mvc.Core/DefaultControllerFactory.cs index b818742eb0..e7ae87b916 100644 --- a/src/Microsoft.AspNet.Mvc.Core/DefaultControllerFactory.cs +++ b/src/Microsoft.AspNet.Mvc.Core/DefaultControllerFactory.cs @@ -35,7 +35,7 @@ namespace Microsoft.AspNet.Mvc var controller = _typeActivator.CreateInstance( _serviceProvider, - actionDescriptor.ControllerDescriptor.ControllerTypeInfo.AsType()); + actionDescriptor.ControllerTypeInfo.AsType()); actionContext.Controller = controller; _controllerActivator.Activate(controller, actionContext); diff --git a/test/Microsoft.AspNet.Mvc.WebApiCompatShimTest/ApiControllerActionDiscoveryTest.cs b/test/Microsoft.AspNet.Mvc.WebApiCompatShimTest/ApiControllerActionDiscoveryTest.cs index 44d5a4587b..190d4df449 100644 --- a/test/Microsoft.AspNet.Mvc.WebApiCompatShimTest/ApiControllerActionDiscoveryTest.cs +++ b/test/Microsoft.AspNet.Mvc.WebApiCompatShimTest/ApiControllerActionDiscoveryTest.cs @@ -34,7 +34,7 @@ namespace System.Web.Http // Assert var controllerType = typeof(TestControllers.ProductsController).GetTypeInfo(); - var actions = results.Where(ad => ad.ControllerDescriptor.ControllerTypeInfo == controllerType).ToArray(); + var actions = results.Where(ad => ad.ControllerTypeInfo == controllerType).ToArray(); Assert.NotEmpty(actions); } @@ -53,7 +53,7 @@ namespace System.Web.Http // Assert var controllerType = typeof(TestControllers.Blog).GetTypeInfo(); - var actions = results.Where(ad => ad.ControllerDescriptor.ControllerTypeInfo == controllerType).ToArray(); + var actions = results.Where(ad => ad.ControllerTypeInfo == controllerType).ToArray(); Assert.Empty(actions); } @@ -73,7 +73,7 @@ namespace System.Web.Http // Assert var controllerType = typeof(TestControllers.StoreController).GetTypeInfo(); var actions = results - .Where(ad => ad.ControllerDescriptor.ControllerTypeInfo == controllerType) + .Where(ad => ad.ControllerTypeInfo == controllerType) .Where(ad => ad.MethodInfo.Name == "GetAll") .ToArray(); @@ -109,7 +109,7 @@ namespace System.Web.Http // Assert var controllerType = typeof(TestControllers.StoreController).GetTypeInfo(); var actions = results - .Where(ad => ad.ControllerDescriptor.ControllerTypeInfo == controllerType) + .Where(ad => ad.ControllerTypeInfo == controllerType) .Where(ad => ad.MethodInfo.Name == "Edit") .ToArray(); @@ -145,7 +145,7 @@ namespace System.Web.Http // Assert var controllerType = typeof(TestControllers.StoreController).GetTypeInfo(); var actions = results - .Where(ad => ad.ControllerDescriptor.ControllerTypeInfo == controllerType) + .Where(ad => ad.ControllerTypeInfo == controllerType) .Where(ad => ad.MethodInfo.Name == "Delete") .ToArray(); @@ -182,7 +182,7 @@ namespace System.Web.Http // Assert var controllerType = typeof(TestControllers.StoreController).GetTypeInfo(); var actions = results - .Where(ad => ad.ControllerDescriptor.ControllerTypeInfo == controllerType) + .Where(ad => ad.ControllerTypeInfo == controllerType) .Where(ad => ad.MethodInfo.Name == "Options") .ToArray(); @@ -218,7 +218,7 @@ namespace System.Web.Http // Assert var controllerType = typeof(TestControllers.StoreController).GetTypeInfo(); var actions = results - .Where(ad => ad.ControllerDescriptor.ControllerTypeInfo == controllerType) + .Where(ad => ad.ControllerTypeInfo == controllerType) .ToArray(); Assert.NotEmpty(actions); @@ -243,7 +243,7 @@ namespace System.Web.Http // Assert var controllerType = typeof(TestControllers.StoreController).GetTypeInfo(); var actions = results - .Where(ad => ad.ControllerDescriptor.ControllerTypeInfo == controllerType) + .Where(ad => ad.ControllerTypeInfo == controllerType) .ToArray(); Assert.NotEmpty(actions); @@ -268,7 +268,7 @@ namespace System.Web.Http // Assert var controllerType = typeof(TestControllers.EmployeesController).GetTypeInfo(); var actions = results - .Where(ad => ad.ControllerDescriptor.ControllerTypeInfo == controllerType) + .Where(ad => ad.ControllerTypeInfo == controllerType) .Where(ad => ad.Name == "Get") .ToArray(); @@ -295,7 +295,7 @@ namespace System.Web.Http // Assert var controllerType = typeof(TestControllers.EmployeesController).GetTypeInfo(); var actions = results - .Where(ad => ad.ControllerDescriptor.ControllerTypeInfo == controllerType) + .Where(ad => ad.ControllerTypeInfo == controllerType) .Where(ad => ad.Name == "Put") .ToArray(); @@ -322,7 +322,7 @@ namespace System.Web.Http // Assert var controllerType = typeof(TestControllers.EmployeesController).GetTypeInfo(); var actions = results - .Where(ad => ad.ControllerDescriptor.ControllerTypeInfo == controllerType) + .Where(ad => ad.ControllerTypeInfo == controllerType) .Where(ad => ad.Name == "Post") .ToArray(); diff --git a/test/WebSites/RoutingWebSite/TestResponseGenerator.cs b/test/WebSites/RoutingWebSite/TestResponseGenerator.cs index 8b9dda4025..cf6f1dcb19 100644 --- a/test/WebSites/RoutingWebSite/TestResponseGenerator.cs +++ b/test/WebSites/RoutingWebSite/TestResponseGenerator.cs @@ -47,7 +47,7 @@ namespace RoutingWebSite routeValues = new Dictionary(_actionContext.RouteData.Values), action = _actionContext.ActionDescriptor.Name, - controller = ((ControllerActionDescriptor)_actionContext.ActionDescriptor).ControllerDescriptor.Name, + controller = ((ControllerActionDescriptor)_actionContext.ActionDescriptor).ControllerName, link, }); diff --git a/test/WebSites/VersioningWebSite/TestResponseGenerator.cs b/test/WebSites/VersioningWebSite/TestResponseGenerator.cs index 79e0ea3c57..45431ed458 100644 --- a/test/WebSites/VersioningWebSite/TestResponseGenerator.cs +++ b/test/WebSites/VersioningWebSite/TestResponseGenerator.cs @@ -47,7 +47,7 @@ namespace VersioningWebSite routeValues = new Dictionary(_actionContext.RouteData.Values), action = _actionContext.ActionDescriptor.Name, - controller = ((ControllerActionDescriptor)_actionContext.ActionDescriptor).ControllerDescriptor.Name, + controller = ((ControllerActionDescriptor)_actionContext.ActionDescriptor).ControllerName, link, });