天天看點

Ninject(二)——Modules和Kernel

很多的DI架構中,XML映射檔案會快速的增加,而不容易導航。在Ninject中,類型綁定被集中到子產品中。每一個子產品代表應用程式中的一個獨立片段存在。它們可以以你喜歡的方式組織起來。子產品隻需實作IModule接口,但大多數子產品隻需簡單的從标準子產品(StandardModule)派生即可。

例:

public class WarriorModule : StandardModule

{

public override void Load()

Bind<IWeapon>().To<Sword>();

Bind<Samurai>().ToSelf();

}

一旦建立了子產品。就可以把這些對象收集到一個叫核心(kernel)的容器中。可以從字面上了解,這個核心是應用程式的核心。調用核心的Get()方法就可以得到一種類型的執行個體。

以下一個例子來闡述如何建立一個核心,然後激活它和通過它來建立一個類型執行個體。

IKernel _kernel = new StandardKernel(new WarriorModule());

Samurai sam = _kernel.Get<Samurai>();

sam.Attack("僵屍");

調用Get()方法的結果就是為武士裝備了一把劍。是以,調用武士的Attack()方法的結果和以前的結果相同。

可以建立許多子產品,然後把它們傳到核心的構造器中。

public class Modul_2 : StandardModule

{

……

同樣的,要記得子產品在應用程式中和其它代碼以同樣的方式執行。不它不隻是限于死綁,可以加上其它的語句,

if (true)

else

Bind<IWeapon>().To<Shuriken>();

 參考原文:

http://ninject.codeplex.com/wikipage?title=Modules%20and%20the%20Kernel&referringTitle=User%20Guide

部落格園大道至簡

http://www.cnblogs.com/jams742003/

轉載請注明:部落格園

繼續閱讀