gpt4 book ai didi

c# - 在 ASP.NET Core 中创建单例服务的正确方法——是否必须使用 static 关键字?

转载 作者:行者123 更新时间:2023-12-05 08:22:35 25 4
gpt4 key购买 nike

这让我很困惑。没有什么能阻止我们创建一个带有实例字段的类,并且实例方法,而不是创建具有静态字段和静态方法的类。两者都可以注册为单例。

是否有解决此问题的首选方法,为什么?

编辑:我不是在询问如何使用单例模式创建类。我问的是单例依赖注入(inject)一个类还是注入(inject)同一个类但具有静态定义的成员/字段/方法/属性。

最佳答案

你需要了解不同的lifetimes DI和您的需求,以选择合适的生命周期。

  • transient 服务在每次请求服务时创建(因此,如果在 1 个请求中,服务被使用 2 次,它将被创建 2 次)。
  • Scoped 服务是根据网络请求创建的(因此,如果在 1 个请求中,一项服务被使用了 2 次,它将只创建一次)。
  • Singleton 是一个将持续整个应用程序生命周期的实例(所有请求将共享这个实例)。

如有疑问,请将其设为 transient 。

编辑

我想值得一提的是,如果您将服务创建为 Transient,并且它们具有您不断更改的静态属性,那么这将影响所有其他创建的实例,因为 static影响类型本身,而不是实例。

关于c# - 在 ASP.NET Core 中创建单例服务的正确方法——是否必须使用 static 关键字?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60302886/

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