扩展方法中的方法注入

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

    //...
    
}