我正在开发一个 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/