2010-03-25 199 views
0

我是ninject的新手,我想知道如何在構建注入對象時運行自定義initizlisation代碼?即。我有一個實現IWeapon的劍類,但是我想把一個生命值傳遞給劍類構造函數,我該如何實現?我需要寫我自己的提供者嗎?一個小問題,IKernel kernel = new StandardKernel(new Module1(),new Module2(),...);內核中有多個模塊的實際用途是什麼?我有點理解它,但是有人能給我一個正式的解釋和用例嗎?Ninject - 初始化對象

非常感謝!

詹姆斯

回答

1

如果你有一個類劍與此構造函數:

public Sword(int hitPoints) 
    ... 

而不是實現供應商,你可能更願意實例化這樣的劍:

IWeapon sword1 = kernel.Get<IWeapon>(With.Parameters.ConstructorArgument("hitPoints", 10)); 
IWeapon sword2 = kernel.Get<IWeapon>(With.Parameters.ConstructorArgument("hitPoints", 20)); 
+0

很好的回答,現在如果我有一個戰士類使用那個劍類(通過IWeapon),例如Warrior james = kernel.Get ();我如何將生命值傳入劍對象? – 2010-03-25 01:09:11

+0

如果我必須運行這個命令IWeapon sword1 = kernel.Get (With.Parameters.ConstructorArgument(「hitPoints」,10));爲了得到劍的對象,爲什麼我不能運行IWeapon sowrd1 = new Sword(10); ??? – 2010-03-25 02:07:35

+0

好問題。要回答你的第一個問題,如果你需要這個級別的控制,那麼你應該使用演示者實例化劍實例。 至於你的第二個問題,依賴注入的強大之處在於你可以將你的設計與它的實現分開。如果你總是想要一把劍,並且你知道你總是想要一把劍,那麼你可能不需要DI。 – anthony 2010-03-28 02:03:35