asp.net-mvc - 在扩展方法中使用 IoC

标签 asp.net-mvc ioc-container structuremap

我正在开发一个 ASP MVC 3 应用程序,并且正在编写一个自定义 html 帮助程序。它没有什么特别或非常复杂的,但它需要一个来自结构映射的接口(interface)实例。我知道我可以简单地从方法内部调用结构映射的对象工厂,但由于应用程序的其余部分使用 IoC 而不是服务位置,我想保持这种方式。

有没有办法从内部和asp net mvc应用程序将接口(interface)注入(inject)扩展方法?

更新

我正在做的一个例子可能会有所帮助:

public static class ShowUrl
{
    public static string ForShow(this UrlHelper url, int showId)
    {
        var service = ObjectFactory.GetInstance<IPerformanceService>();

        var showName = service.GetPerformanceTitle(showId);

        return url.Action(MVC.Performance.Details(showId, showName.ToFriendlyUrl()));
    }
}

这是这样使用的:
<a href='<%= Url.ForShow(1)%>'>

本质上,我正在尝试使用来自实体 ID 的 slug 构建一个 URL。也许我只是在以一种非常愚蠢的方式来解决这个问题。

最佳答案

无法将依赖项注入(inject)扩展方法。

对于 ASP.NET MVC 帮助程序,您将不得不做某种服务位置 - 是否用某种抽象来掩埋它取决于您。

关于asp.net-mvc - 在扩展方法中使用 IoC,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6598397/

相关文章:

c# - 在 C# 中具有我自己的属性的 StructureMap

c# - 将 IoC 容器用于插件架构

java - 创建 bean 时出错,无法将新的 LinkedBlockingQueue 作为构造函数注入(inject)到 ThreadPoolExecutor

caSTLe-windsor - IoC容器适用性/场景演示?

c# - 后台任务中的 IOC DI 多线程生命周期范围

silverlight - Silverlight 的依赖注入(inject)?

javascript - 如何将 knockout.js 与 leaflet.js map 标记一起使用?

c# - 如何从登录用户获取 "B2C JWT Access Token"?

c# - 如何使用 MvcContrib 的 XmlResult 生成带有属性而不是节点的 XML?

c# - 在 delegatinghandler 中更改 webapi Controller 操作参数