理解IOC DI IOC容器

2022-02-15 03:22:48 字數 1793 閱讀 2116

下面的不要看,啥也不是:

控制反轉(ioc):

不需要你乙個個的去new class,

而是只需要你在服務中注入服務(交給容器去建立)

依賴注入(di):

容器建立好後,再到你使用的時候,從容器把服務拿出來用的過程。

這個過程包含:屬性注入,建構函式注入

當你使用ioc,程式啟動的時候,這裡是有2個過程:

1:startup裡,專案要用的服務注入進來:services.addtransient<itestservices, testservicetemp>();

1.1:插一句,這裡在請求的時候,先是去的testservicestemp這個類的建構函式;走到下面的第二步的時候,啥都已經宣告好了ok了

2:你傳送請求的時候,在構造的時候,把你注入到容器中的服務拿過來處理邏輯,這就夠了

那就再來說說三個生命週期:

no1:singleton "

單個的,單一序列;單例模式

"//

services.addsingleton();

//每次呼叫testservicetemp,都是同乙個testservicetemp例項

//只要這個程式跑起來,這個例項就這乙個,不會建立新的例項

no2:transient(短暫的;轉瞬即逝的)

//這裡每次呼叫testservicetemp,都是新建立乙個testservicetemp例項

//不管什麼作用域啥的,每次請求都是會構造乙個新的例項

//例項的hashcode是不一樣的no3:scoped(範圍,作用域)

services.addscoped

();

//這裡每次呼叫testservicetemp,都是新建立乙個testservicetemp例項

//但是要是在同一作用域內去請求這兩個services的hashcode是一樣的

我感覺scope這個用的不多

注意:下面的_services 和tesrvices是兩種注入方式

[route(

"api/[controller]")]

[apicontroller]

public

class

testcontroller : controllerbase

//public tupleget([fromservices]itestservices tservices)

}

CopyOnWrite容器理解

什麼是copyonwrite容器 copyonwrite容器即寫時複製的容器。通俗的理解是當我們往乙個容器新增元素的時候,不直接往當前容器新增,而是先將當前容器進行copy,複製出乙個新的容器,然後新的容器裡新增元素,新增完元素之後,再將原容器的引用指向新的容器。這樣做的好處是我們可以對copyon...

C 容器vector 理解

通過設定一些模版類,stl容器對最常用的資料結構提供了支援,這些模板的引數允許我們指定容器中元素的資料型別,可以將我們許多重複而乏味的工作簡化。與string 類一樣vector 類是隨標準c 引入的標準庫的一部,為了使用vector 我們必須包含相關的標頭檔案。向量 vector 連續儲存的元素 ...

C STL容器的理解

1.容器 資料結構 演算法。相當於是為複雜的資料設計一種專門用於存放該資料的東西。用於開發中傳遞複雜的資料。2.模板函式只能寫在標頭檔案中,不能單獨宣告。3.stl容器分為三類 1 順序容器類 vector 陣列。查詢快,插入慢。加入的資料與資料大小有關 操作 empty 返回bool型,表示vec...