![](/img/trans.png)
[英]What does the @inject() do in dependency injection with tsyringe?
[英]What does a Dependency Injection framework do for you?
該框架根據某種配置(無論是代碼、XML 文件等)為您連接一切。
基本上是水管。
許多 DI 框架還包括 Aspect Oriented Programming、object 生命周期管理等,但 DI 的基礎是讓您的應用程序啟動並運行,對象之間相互通信。
另一種說法:DI 框架是一段代碼,它調用構造函數並告訴整個事情在完成后運行:)
我使用它的主要目的是讓我無需重新編譯即可插入 object 的新實現。 我只需更改一個配置文件,我的對象就會正確連接在一起。
找出它們如何有用的最好方法是嘗試一些。 我一直想嘗試一下Spring.NET ,它看起來是一個很好的實現。
我真正喜歡 AOP 的一件事是它非常容易在開發版本和生產版本之間移動。 您可以創建非常詳細的日志記錄,然后基本上翻轉 xml 開關,它就消失了。
使用 DI/IOC 的主要優點之一是減少不同類之間的耦合。
當您使用該方法時,您必須配置對象的層次結構,這些層次結構表達了您從其代碼中取出的依賴關系。 這可以變成很多代碼。 即使您使用 DI 框架的代碼部分,它也可以通過讓您以更具表現力的方式進行配置來大大減少配置量:
我使用的幾個結構圖配置:
ForRequestedType<ILogger>().TheDefaultIsConcreteType<NLogLogger>();
//the following injects any property that has a type
//that implements IController. (overcomes a regular asp.net limitation with DI)
SetAllProperties(
p => p.TypeMatches(t => t.IsConcreteAndAssignableTo(typeof(IController)))
);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.