Asp.net core DI依赖注入以及对象的释放(2)

接着上一篇文章继续:

3.以Singleton方式注入对象:

第一次请求时创建对象,且app关闭时才释放该对象

  //工厂注入方式:第一次请求时创建对象,且app关闭时才释放该对象
  services.AddSingleton<IOrderService>(x=>new DisposableOrderService());

 

 /// <summary>
        /// 演示Singleton注入方式的对象的释放
        /// </summary>
        /// <param name="hostApplicationLifetime"></param>
        /// <param name="stop"></param>
        /// <returns></returns>
        [HttpGet("TestDISingleton")]
        public int TestDISingleton([FromServices] IHostApplicationLifetime hostApplicationLifetime,
            [FromQuery] bool stop = false)
        {

            if (stop) {

                hostApplicationLifetime.StopApplication();
            }
            //return Enumerable.Range(1, 5).Select(index => new WeatherForecast
            //{
            //    Date = DateTime.Now.AddDays(index),
            //    TemperatureC = rng.Next(-20, 55),
            //    Summary = Summaries[rng.Next(Summaries.Length)]
            //})
            //.ToArray();

            return 10;
        }

 

进入了Dispose方法,且app关闭

 4.演示手工创建对象,然后放到DI容器中,这种方式不会由DI容器销毁

  var orderService = new DisposableOrderService();
   services.AddTransient(x => orderService);

发现应用关闭,也没调用Dispose方法

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值