C# 是否可以在HTML助手方法中确定ASP.NET核心托管环境?
我正在ASP.NETCore中编写一个HTML助手方法,希望检测当前的托管环境。指定的方法是使用DI,例如:C# 是否可以在HTML助手方法中确定ASP.NET核心托管环境?,c#,asp.net-core,dependency-injection,html-helper,C#,Asp.net Core,Dependency Injection,Html Helper,我正在ASP.NETCore中编写一个HTML助手方法,希望检测当前的托管环境。指定的方法是使用DI,例如: public class MyClass { private readonly IHostingEnvironment _hostingEnvironment; public MyClass(IHostingEnvironment hostingEnvironment) { _hostingEnvironment = hostingEnvironment
public class MyClass {
private readonly IHostingEnvironment _hostingEnvironment;
public MyClass(IHostingEnvironment hostingEnvironment) {
_hostingEnvironment = hostingEnvironment;
}
public void Xyzzy() {
var environment = _hostingEnvironment.EnvironmentName;
[...]
}
}
然而HTML助手方法是扩展方法,因此必须是静态的,所以不能使用DI。在
IHtmlHelper
对象中,我似乎看不到任何告诉我当前托管环境的信息;如何从我的HTML助手方法中找到它?IHtmlHelper
有一个属性,它本身也有一个属性。有了它,您可以使用获得IHostingEnvironment
。下面是一个例子:
htmlHelper.ViewContext.HttpContext.RequestServices
.GetRequiredService<IHostingEnvironment>();
htmlHelper.ViewContext.HttpContext.RequestServices
.GetRequiredService();
这不是DI:它使用的是服务定位器模式,它通常被称为。如果您想使用DI,请考虑创建一个替代“<代码> IHTMLHelpE./COD>扩展方法”。这也将减少嵌套所有这些属性访问调用的需要