gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-03 10:37:45 25 4
gpt4 key购买 nike

我在 ASP MVC 项目中使用 LightInject。初始化代码与以下内容大致相同:http://www.lightinject.net/#mvc

我的问题是如何解析静态函数中的实例,例如 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);
}

我能否将 MvcApplication 类中的 ServiceContainer 设为静态,或者这是一种不好的做法?

最佳答案

您可以将容器设为单例(静态),因为在大多数情况下,每个应用程序域只有一个容器实例。话虽如此,我不建议从扩展方法中访问容器。你在这里基本上做的是服务定位器模式,它被认为是一种反模式。尝试以仅引用组合根(应用程序启动)中的容器的方式组织代码。所以在这种情况下,您应该考虑制作一个没有容器的扩展方法,或者您可以将 HtmlHelper 注入(inject)到任何需要它的类中。

问候 Bernhard Richter(LightInject 的作者)

关于c# - 使用 LightInject 解析静态函数中的实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26948063/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com