Created
July 11, 2011 01:13
-
-
Save jakcharlton/1075171 to your computer and use it in GitHub Desktop.
SingleAction Windsor Controller Factory
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
public class WindsorControllerFactory : DefaultControllerFactory | |
{ | |
private readonly IKernel kernel; | |
public WindsorControllerFactory(IKernel kernel) | |
{ | |
this.kernel = kernel; | |
} | |
public override void ReleaseController(IController controller) | |
{ | |
kernel.ReleaseComponent(controller); | |
} | |
protected override IController GetControllerInstance(RequestContext context, Type controllerType) | |
{ | |
var baseNs = typeof(SecureController).Namespace; | |
var ns = context.RouteData.GetRequiredString("controller").ToLower(); | |
var controllerName = context.RouteData.GetRequiredString("action").ToLower() + "controller"; | |
try | |
{ | |
var controller = kernel.Resolve<IController>(baseNs.ToLower() + "." + ns + "." + controllerName); | |
return controller; | |
} | |
catch (ComponentNotFoundException ex) | |
{ | |
throw new HttpException(404, string.Format("The controller for path '{0}' could not be found.", context.HttpContext.Request.Path)); | |
} | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment