我有一个依赖于UrlHelper的组件,我需要使用Castle Windsor注册. UrlHelper反过来又对RequestContext(和RouteCollection)有所了解.
现在我的控制器有一个类型为UrlHelper的Url属性,但据我所知,它无法真正访问它.
解决方法
不漂亮,没有测试,但它应该工作:
- container.AddFacility<FactorySupportFacility>();
- container.Register(Component.For<UrlHelper>()
- .LifeStyle.PerWebRequest
- .UsingFactoryMethod(() => {
- var context = new HttpContextWrapper(HttpContext.Current);
- var routeData = RouteTable.Routes.GetRouteData(context);
- return new UrlHelper(new RequestContext(context,routeData));
- }));
Windsor的未来版本不需要FactorySupportFacility来使用UsingFactoryMethod.
无论如何,对UrlHelper依赖似乎很奇怪……