扩展方法中的方法注入
Method injection in extension method
我有一个接受 IHtmlHelper 的扩展方法,如下所示:
public static HtmlString HelpContext(this IHtmlHelper helper)
{
return "";
}
然后从 Razor 页面调用此函数。
我在启动时加载了我的设置,并且可以通过依赖项注入进行访问。如果不创建静态设置 class,我该怎么做?是否可以在这里进行方法注入,而不必在每次调用时从页面注入设置?
根据所访问代码的静态性质,需要应用服务定位器方法。
通过 IHtmlHelper.ViewContext
解析所需的类型,它可以访问 HttpContext
。允许通过 HttpContext.RequestServices
访问 IServiceProvider
public static HtmlString HelpContext(this IHtmlHelper helper) {
IServiceProvider services = helper.ViewContext.HttpContext.RequestServices;
var x = services.GetRequiredService<IMyType>();
//...
}
我有一个接受 IHtmlHelper 的扩展方法,如下所示:
public static HtmlString HelpContext(this IHtmlHelper helper)
{
return "";
}
然后从 Razor 页面调用此函数。
我在启动时加载了我的设置,并且可以通过依赖项注入进行访问。如果不创建静态设置 class,我该怎么做?是否可以在这里进行方法注入,而不必在每次调用时从页面注入设置?
根据所访问代码的静态性质,需要应用服务定位器方法。
通过 IHtmlHelper.ViewContext
解析所需的类型,它可以访问 HttpContext
。允许通过 HttpContext.RequestServices
IServiceProvider
public static HtmlString HelpContext(this IHtmlHelper helper) {
IServiceProvider services = helper.ViewContext.HttpContext.RequestServices;
var x = services.GetRequiredService<IMyType>();
//...
}