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