C# 使用LightInject解析静态函数中的实例

C# 使用LightInject解析静态函数中的实例,c#,asp.net-mvc,light-inject,C#,Asp.net Mvc,Light Inject,我正在ASP MVC项目中使用LightInject。初始化代码与上的大致相同: 我的问题是如何解析静态函数中的实例,例如HTML助手: public static string MyHtmlExtension(this HtmlHelper h) { var myService = new MyService(); // <- get this from container instead of creating new object return myService.DoSom

我正在ASP MVC项目中使用LightInject。初始化代码与上的大致相同:

我的问题是如何解析静态函数中的实例,例如HTML助手:

public static string MyHtmlExtension(this HtmlHelper h)
{
  var myService = new MyService(); // <- get this from container instead of creating new object
  return myService.DoSomething(h);
}
公共静态字符串MyHtmlExtension(此HtmlHelper h)
{

var myService=new myService();//您可以将容器设置为单例(静态)因为在大多数情况下,每个应用程序域只有一个容器实例。尽管如此,我不建议从扩展方法中访问容器。您在这里主要做的是服务定位器模式,它被视为反模式。请尝试以这样的方式组织代码,即您只引用在构造函数根(应用程序启动)中容器。因此,在这种情况下,您应该考虑在没有容器的情况下创建扩展方法,或者可以将HTMLHelp注入到需要它的任何类中。
尊敬Bernhard Richter(LightInject的作者)

谢谢你的回答。如果我将函数更改为
字符串MyHtmlExtension(此HtmlHelper h,MyService服务)
并在
视图包中引用
MyService
实例,这是一个选项吗?@Marthijn接受答案,如果真的有帮助的话。:@RJK,可以。但是我在评论中问了一个关于答案的问题,所以我在等待第一个答案。