AddTransient、AddSingleton、AddScoped 三者都應該在什么場景下使用


  

  網上隨便一搜,能搜出一大堆對三者進行區別分析的文章,但是呢,理論是一回事,實際使用又是另外一回事,到底在何種場景下應該使用何種注入方式呢?

  

  通過這篇文章和我自身的實際經驗,來說一說實際應用中的情況:

  首先 AddTransient,這個文章中說的挺明白,就是當組件無法共享時,將使用Transient。非線程安全的數據庫訪問對象就是一個例子。

  根據我實際遇到的情況,着重說一下 AddSingleton 和 AddScoped,畢竟這兩種實際開發中用到的比較多。

  

  於我個人而言,我比較習慣用AddScoped,但是在一次多線程的開發過程中,出現了問題——當我在class中初始化了一個AddScoped注入的函數,然后開了一個新的線程引用它時,就會dispose掉,這是因為:AddScoped為每個請求創建一個新實例,開一個新的線程,就不能共享主線程里的了,所以要改成始終是共享的AddSingleton。  

  AddSingleton在全局都是共享的,其生命周期最長。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM