【ASP.NET MVC 學習筆記】- 05 依賴注入工具Ninject

來源:互聯網
上載者:User

標籤:依賴   依賴注入   eval   span   通過   com   limits   when   判斷   

本文參考:http://www.cnblogs.com/willick/p/3223042.html

1、Ninject是一款輕量級的DI工具,可通過VS的外掛程式NuGet將其引用到項目中。

2、使用Ninject的步驟:

  • 建立一個Ninject的核心對象
//建立Ninject核心執行個體IKernel ninjectKernel = new StandardKernel(); 

 

  • 把公開介面綁定到一個實現了該介面的類上
//綁定介面到實現了該介面的類。這種綁定告訴Ninject,當接收到一個請求IValueCalculator的實現時,返回一個LinqValueCalcutor的執行個體ninjectKernel.Bind<IValueCalculator>().To<LinqValueCalculator<(); 

 

  • 使用Ninject的Get方法擷取公開介面的實現
// 獲得實現介面的對象執行個體。Ninject將自動為我們建立LinqValueCalculator類的執行個體,並返回該執行個體的引用IValueCalculator calcImpl = ninjectKernel.Get<IValueCalculator>(); 

 

  • 調用介面實作類別的方法
// 建立ShoppingCart執行個體並注入依賴ShoppingCart cart = new ShoppingCart(calcImpl); 
// 計算商品總價錢並輸出結果Console.WriteLine("Total: {0:c}", cart.CalculateStockValue());

 

3、當請求Ninject建立某個類型的執行個體時,它會檢查這個類型和其它類型之間的耦合關係。如果存在依賴關係,那麼Ninject會根據依賴處理理它們,並建立所有所需類的執行個體。

4、Ninject綁定時為屬性賦值(支援鏈式文法):

ninjectKernel.Bind<IDiscountHelper>().To<DefaultDiscountHelper>().WithPropertyValue("DiscountSize", 5M).WithPropertyValue("DiscountSize2", 5M);

5、Ninject綁定時為建構函式傳參(支援鏈式文法):

ninjectKernel.Bind<IDiscountHelper>().To< DefaultDiscountHelper>().WithConstructorArgument("discountParam", 5M).WithConstructorArgument("discountParam2", 5M);

6、Ninject的自綁定:

//沒有建構函式參數、屬性需要賦值時刺句可省略ninjectKernel.Bind<ShoppingCart>().ToSelf();//這種寫法不需要關心ShoppingCart類依賴哪個介面,也不需要手動去擷取該介面的實現(calcImpl)。//當通過這句代碼請求一個ShoppingCart類的執行個體的時候,Ninject會自動判斷依賴關係,並為我們建立所需介面對應的實現。ShoppingCart cart = ninjectKernel.Get<ShoppingCart>();

7、Ninject的衍生類別綁定:

//衍生類別綁定,其中LimitShoppingCart是ShoppingCart的子類ninjectKernel.Bind<ShoppingCart>().To<LimitShoppingCart>().WithPropertyValue("ItemLimit", 3M);

8、Ninject的條件綁定:

//條件綁定,IValueCalculator介面現在有兩個實現:IterativeValueCalculator和LinqValueCalculator。
//下列語句意思是:如果是把該介面的實現注入到LimitShoppingCart類,那麼就用IterativeValueCalculator,其他情況都用LinqValueCalculator。ninjectKernel.Bind<IValueCalculator>().To<LinqValueCalculator>();ninjectKernel.Bind<IValueCalculator>().To<IterativeValueCalculator>().WhenInjectedInto<LimitShoppingCart>();

 

【ASP.NET MVC 學習筆記】- 05 依賴注入工具Ninject

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.