gpt4 book ai didi

c# - 配置 DI 后 ASP.NET Core 初始化单例

转载 作者:行者123 更新时间:2023-12-03 09:21:31 24 4
gpt4 key购买 nike

因此,假设我在 DI 中注册了一个单例类实例,如下所示:

services.AddSingleton<IFoo, Foo>();

让我们说 Foo类有许多其他依赖项(主要是允许它加载数据的存储库类)。

根据我目前的理解,Foo 实例在第一次使用(被询问)之前不会被创建。除了构造函数之外,还有其他方法可以初始化此类吗?喜欢就在之后 ConfigureServices()完成?还是应该在 Foo 的构造函数中完成初始化代码(从 db 加载数据)?

(如果这个类可以在第一次使用之前加载它的数据以加快首次访问速度,那就太好了)

最佳答案

在启动时自己做。

var foo = new Foo();
services.AddSingleton<IFoo>(foo);

或者“热身”
public void Configure(IApplicationBuilder app) 
{
app.ApplicationServices.GetService<IFoo>();
}

或者
public void Configure(IApplicationBuilder app, IFoo foo) 
{
...
}

但是如果你在构造函数中做了一些你不应该做的事情,这感觉很脏,而且更像是你的设计的问题。类实例化必须很快,如果你在其中进行长时间运行的操作,你就会违反一系列最佳实践,需要重构你的代码库而不是寻找绕过它的方法

关于c# - 配置 DI 后 ASP.NET Core 初始化单例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39005861/

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