【寫在前面】嘗試做完一件工作之外自我覺得有意義的一件事,那就從翻譯Autofac的幫助文檔吧。
入門指南
將Autofac集成你的應(yīng)用程序的步驟通常很簡(jiǎn)單,一般是:
時(shí)刻以IOC(控制反轉(zhuǎn))的思想來規(guī)劃你的應(yīng)用程序
在你的Porject中添加Autofac引用
按照如下步驟設(shè)計(jì)應(yīng)用程序的啟動(dòng)環(huán)節(jié)
創(chuàng)建一個(gè)ContainerBuilder
向ContainerBuilder注冊(cè)組件
通過ContainerBuilder的Build()方法獲得Container(后續(xù)需用到)
在應(yīng)用程序運(yùn)行環(huán)節(jié)時(shí),按如下步驟執(zhí)行
通過Container獲得一個(gè)lifetime scope
通過lifetime scope解析出組件實(shí)例
通過實(shí)例繼續(xù)執(zhí)行
本篇將通過入門指南實(shí)現(xiàn)一個(gè)簡(jiǎn)單的Console應(yīng)用程序,一旦有了基礎(chǔ),后續(xù)可以延伸集成WCF、ASP.NET等等。
規(guī)劃應(yīng)用程序
先簡(jiǎn)單解釋一下IOC(控制反轉(zhuǎn))。
通常情況下,類A若需要類B的一些功能,則在類A中需要通過“new”操作來完成創(chuàng)建和使用功能,這樣在代碼層面就固定住了類A和類B之間的相互依賴關(guān)系。這樣的“依賴”,在后續(xù)的重構(gòu)或修改時(shí),影響面很大。
而IOC(控制反轉(zhuǎn))的思維,則是取消,由類A來創(chuàng)建類B,變更為在執(zhí)行期間,由IOC容器來根據(jù)需要和約定自動(dòng)創(chuàng)建類B來給類A使用。
Martin Fowler有一篇著名的文章,解釋何謂IOC,可以點(diǎn)擊“鏈接”查看。
在本篇的示例中,我們將定義一個(gè)類,這個(gè)類可以輸出一些數(shù)據(jù);但我們不想和Console綁定住,因?yàn)槲覀儾⒉荒艽_定在實(shí)際使用過程中Console是否真的可用。
我們通常可以這樣實(shí)現(xiàn):