我有一个依赖于UrlHelper的组件,需要使用CaSTLe Windsor进行注册。 UrlHelper反过来在RequestContext(和RouteCollection)上具有依赖关系。

现在,我的 Controller 具有UrlHelper类型的Url属性,但据我所知无法真正访问它。

注册我的UrlHelper依赖项的最有效方法是什么(使用流畅的配置)?

最佳答案

不漂亮,没有经过测试,但是应该可以工作:

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));
    }));

温莎的 future 版本将不需要FactorySupportFacility来使用UsingFactoryMethod。

无论如何,依赖于UrlHelper似乎很奇怪。

关于asp.net-mvc-2 - 如何使用CaSTLe Windsor在MVC中注入(inject)UrlHelper,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/2958292/

10-12 12:41