c# - 在应用程序开始时创建注入对象,而不是在请求时
问题描述
我创建了一个如下所示的 ASP.NET Core API 项目,启动它,然后等待了几秒钟。在我请求 API URL 之前,没有打印“正在创建 XXX”。我可以告诉 ASP.NET CoreMyXXX
在它启动后创建一个是否有请求吗?原因是创建/初始化可能需要一段时间MyXXX
,如果在请求之前完成,第一个请求会更快。
public void ConfigureServices(IServiceCollection services)
{
services.AddSingleton<IXXX, MyXXX>();
services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_2);
}
[HttpGet]
public ActionResult<string> Get([FromServices]IXXX xxx)
{
return xxx.Value.ToString();
}
public interface IXXX
{
int Value { get; set; }
}
class MyXXX : IXXX
{
public MyXXX()
{
Debug.WriteLine("Creating XXX");
}
public int Value { get; set; }
}
解决方案
是的,你当然可以自己做!
var concrete= new MyXXX();
services.AddSingleton<IXXX>(concrete);
推荐阅读
- rdkit - ECFP4指纹对应哪个RDKit指纹
- javascript - 如何清除反应 dropzone 文件输入以及成功图标并显示初始拖放
- java - 循环条件的未经检查的输入
- flutter - 断言失败:第 35 行第 18 行:'经度!= null':不正确
- jenkins - 詹金斯将“来自 SCM 的管道脚本”转换为“自由式项目”
- spring-boot - JPA Hibernate deleteAll(列表
实体)未按预期工作 - java - 如果记录已存在,如何更新或在 SYBASE 中插入新记录?
- wordpress - Elementor 没有加载我的主题的functions.php
- python-3.x - 在不知道完整文件夹路径的情况下将文件保存在以前的目录中 | Python
- c# - User32 API SendMessage 从 Win10 OS 中的打开文件对话框打开文件