當元件註冊後,系統都會自動建立乙個元件元資料類icomponentinfo 來對該元件進行繫結,系統根據元件元資料進行元件建立,依賴注入,動態**植入,元件查詢定位等,元件元資料在di容器中的地位是非常重要的。
元件元資料定義了以下幾個重要的成員:
元件id屬性:通過該id可以唯一標記乙個元件,服務定位器可以通過元件id獲取元件例項,當註冊元件時如果沒有提供元件id,系統會自動根據元件型別的全名自動生成
serviceregistry.register("person");
元件契約列表屬性:乙個元件可以繼承乙個契約基類或實現了乙個或多個契約介面。當容器註冊元件時,容器首先把元件自身型別作為契約新增到元件契約列表,然後掃瞄元件的 及所實現的介面是否標記有contractattribute標籤,如果含有標籤contractattribute則把基類和介面新增到契約介面集合中。
[contract]
inte***ce iperson
}class person : iperson
public static bool hasvisited;
public person()
}serviceregistry.register();
person 元件就有兩個契約型別iperson和person
元件型別屬性:di容器中的元件工廠會根據元件型別來建立元件例項。該元件型別是空值的話,那麼元件元資料中必須有乙個自定義工廠型別或工廠方法委託函式來建立元件。 當元件型別是抽象型別(介面或抽象類)時,那麼元件對應的元件工廠就必須是**工廠了,否則就會拋異常了
元件工廠型別屬性:元件工廠的作用是建立元件的,mini容器提供以下元件工廠
defaultactivator : 預設工廠,通過建構函式來進行物件建立
delegateactivator :委託工廠,通過委託函式進行物件建立
instanceactivator :例項工廠,該工廠僅僅是例項物件的佔位器而已
var p = new person();
p.name = "test !";
serviceregistry.current.registerinstance(p);
assert.istrue(serviceregistry.hasregister());
var person = servicelocator.get();
assert.isnotnull(person);
assert.aresame(p, person);
proxyactivator :**工廠,該工廠建立乙個被植入後的元件例項,常常和aop一塊使用
如果以上工廠不能滿足你的需求可以自定工廠
元件物件的生命週期型別屬性:生命週期型別對應乙個生命週期管理器
生命週期型別
生命週期管理器
描述singleton
singletontlifestylemanager
單利thread
threadlifestylemanager
transient
transientlifestylemanager
臨時,每次請求元件例項都返回乙個新的例項,該例項不會被容器管理
genericsingleton
genericsingletonlifestylemanager
泛型單利
genericthread
genericthreadlifestylemanager
generictransient
generictransientlifestylemanager
泛型臨時
元件的擴充套件屬性:包含一些擴充套件元資料,供元件***使用來擴充套件di容器的功能
元件的工廠方法委託屬性:
serviceregistry.current.register(() => new person());assert.istrue(serviceregistry.hasregister());
var person = servicelocator.get();
assert.istrue(person != null);
var person2 = servicelocator.get();
assert.istrue(person2 != null);
assert.aresame(person, person2);
assert.istrue(person.hasvisited);
mini 容器官方**:
mini容器介紹
mini容器學習目錄
mini容器學習目錄1——環境搭建(基礎篇)
mini 容器學習筆記2——元件元資料(基礎篇)
mini 容器學習筆記3——元件的註冊(基礎篇)
mini 容器學習筆記4——元件的生命週期(應用篇)
mini 容器學習筆記5——元件的獲取
mini 容器學習筆記6——元件的獲取(應用)
mini 容器學習筆記7——建構函式注入
mini 容器學習筆記8——字段注入
mini 容器學習筆記9——屬性注入
mini 容器學習筆記10——方法注入
mini 容器學習筆記11——lazy注入
mini 容器學習筆記12——組合例項
mini 容器學習筆記13——外掛程式注入
mini 容器學習筆記14——異常處理
mini 容器學習筆記15——***-初始化***
mini 容器學習筆記16——***-釋放***
mini 容器學習筆記17——***-啟動/停止***
mini 容器學習筆記18——***-aop***
Mini 容器學習筆記3 元件的註冊 基礎篇
mini容器主要實現了兩個介面,乙個是服務登錄檔介面,乙個是服務定位器介面。那麼元件的註冊就要依靠服務登錄檔介面iserviceregistry了。iserviceregistry介面的定義 public inte ce iserviceregistry iserviceregistry的擴充套件方...
React學習筆記(三)元件
元件 props 元件可以在它的輸出中引用其它元件,這就可以讓我們用同一元件來抽象出任意層次的細節。在react應用中,按鈕 表單 對話方塊 整個螢幕的內容等,這些通常都被表示為元件。react將作為props傳入並呼叫welcome元件。welcome元件將元素作為結果返回。functionwel...
Axure學習筆記(二)元件
1.通用型元件的使用 14種 標題元件 單行文字 設定字型大小大小顏色等等 文字元件 多行文字 設定字型大小大小顏色等等 矩形元件 右鍵選單可改變形狀,可以利用矩形組建製作 按鈕 導航選單 佔位符元件 更強調佔位作用 可新增文字提示ui人員 自定義形狀元件 製作頁籤切換效果 步驟箭頭等等 橫線和垂直...