建立你自己的依賴注入容器Ioc Container

2021-08-26 01:47:23 字數 1090 閱讀 4782

最近研究了ioc,di 以及一些開源的框架,以下根據自己的理解寫乙個簡單的ioc容器。我們在使用乙個依賴注入容器時一般都是實現三步:

建立乙個ioc容器;

依賴關係注入,這裡需要一種collection物件儲存這種注入關係;

根據依賴注入獲取物件的例項;

好了,接下來我們可以按照測試驅動開發的模式完成乙個簡易版本的注入容器:mincontainer

[testmethod]

public void cannewcontainerandresolvetype()

建立容器時定義了乙個介面型別的容器,在這個介面中需要包含抽象方法的定義,看這個介面

public inte***ce imincontainer:idisposable

接下來就是實現這個介面,

public   class mincontainer:imincontainer

;if (!_regkey.containskey(tfrom))

_regkey.add(tfrom, tk);

}public object resolve(type t)

public ttype resolve()

...

這裡需要乙個字典型別的集合器來保持註冊的物件

public class typekeys

public object mininstance //型別例項

}

createinstance方法是建立物件的例項

private object createinstance(type t)

在resolve方法中getinstance方法實現如下,主要是從字典中獲取例項。

private object getinstance(typekeys typekey)

好了,至此簡單的原理級別的**完成,測試。

在控制台中進行測試:

建立你自己的依賴注入容器Ioc Container

最近研究了ioc,di 以及一些開源的框架,以下根據自己的理解寫乙個簡單的ioc容器。我們在使用乙個依賴注入容器時一般都是實現三步 建立乙個ioc容器 依賴關係注入,這裡需要一種collection物件儲存這種注入關係 根據依賴注入獲取物件的例項 好了,接下來我們可以按照測試驅動開發的模式完成乙個簡...

IOC容器的依賴注入

當spring ioc容器完成了bean定義資源的定位 載入和解析註冊以後,ioc容器中已經管理類bean定義的相關資料,但是此時ioc容器還沒有對所管理的bean進行依賴注入,依賴注入在以下兩種情況發生 1 使用者第一次通過getbean方法向ioc容索要bean時,ioc容器觸發依賴注入。2 當...

Ioc容器的依賴注入 上篇

主要就是介紹了getbean 以及dogetbean 方法我們已經從ioc容器的系列表中可以了解到 beandefinition資料的載入以及分析,以及註冊等等,以及從前面來說標誌乙個ioc容器完成初始化的事情就是beandefinition的註冊事件,其實在ioc容器完成初始化的一整個過程中,都只...