KnowledgeHub
Questions
Tags
Users
Search
Alex Rivera
|
Logout
Edit Question
Title
Body
At the moment, I have a custom ControllerFactory into which I inject my Unity container: in global.asax Application_Start(): var container = InitContainer(); DependencyResolver.SetResolver(new UnityDependencyResolver(container)); var factory = new UnityControllerFactory(container); ControllerBuilder.Current.SetControllerFactory(factory); In the controller factory I set my controllers to use a custom ActionInvoker like so: protected override IController GetControllerInstance(System.Web.Routing.RequestContext requestContext, Type controllerType) { var controller = base.GetControllerInstance(requestContext, controllerType) as Controller; if (controller != null) controller.ActionInvoker = new UnityActionInvoker(_container); return controller; } Finally in my custom ActionInvoker, I attempt to buildup actions being invoked using the ActionInvokers container: protected override ActionExecutedContext InvokeActionMethodWithFilters( ControllerContext controllerContext, IList<IActionFilter> filters, ActionDescriptor actionDescriptor, IDictionary<string, object> parameters) { var builtUpFilters = new List<IActionFilter>(); foreach (IActionFilter actionFilter in filters) { builtUpFilters.Add(_container.BuildUp<IActionFilter>(actionFilter)); } return base.InvokeActionMethodWithFilters(controllerContext, builtUpFilters, actionDescriptor, parameters); } Here is an example of one of the ActionFilters that is being built up: public class PopulatRolesAttribute : ActionFilterAttribute, IActionFilter { private const string RolesKey = "roles"; [Dependency] public Func<IMetadataService> Service { get; set; } public PopulatRolesAttribute() { } public override void OnActionExecuting(ActionExecutingContext filterContext)
Tags (comma-separated)
Save Edits
Cancel