代码之家  ›  专栏  ›  技术社区  ›  Damn Vegetables

在应用程序开始时创建注入的对象,而不是在请求时

  •  0
  • Damn Vegetables  · 技术社区  · 5 年前

    我创建了一个如下所示的ASP.NET核心API项目,启动了它,并等待了几秒钟。”在我请求API URL之前没有打印XXX。我能告诉ASP.NET核心创建一个 MyXXX 启动后是否有请求?原因是创建/初始化可能需要一段时间 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; }
    }
    
    1 回复  |  直到 5 年前
        1
  •  0
  •   Abolfazl    5 年前

    是的,你当然可以自己做!

    var concrete= new MyXXX();
    services.AddSingleton<IXXX>(concrete);