2011-01-24 27 views
1

我需要添加一個在運行時從構造函數注入到for循環的IVehicle類型的項目。如何在本例中使用Ninject獲取新對象

IVehicle vehicle; 

for (int i=0;i<=someValue;i++) 
{ 
    list.insert(i,vehicle); 
    //some processing to assign values 
} 

,因爲現在Ivehicle已經被這個時候注入,我的名單,儘管有觀點上的不同,並通過控制器來的值相同的值。我怎麼能新達此目的,每次

編輯

的最好辦法新達此目的,每次我發現是從被注入其核心要求新。如前所述,我正在使用Ninject。

我所做的只是使用創建一個類型爲IKernel的變量並獲得構造函數來注入它,然後使用kernel.Get()來獲取新實例。不知道這是否是最好的方式去做這件事,因爲我的構造函數非常貪婪。 :)

private IKernel _kernel;

將此注入到構造函數中,不需要做任何綁定,因爲Ninject已經知道這一點。

然後您可以使用_kernel獲取新的,通過使用_kernel.Get <>()。

希望這可以幫助別人..

+0

考慮更詳細地描述你的問題。你想添加一些車輛的價值或什麼? – 2011-01-24 23:59:16

回答

2

對於這種情況,最好的辦法是注入Func<IVehicle>。並添加下面的綁定。這樣你就沒有在生產代碼中引用Ninject。此外,這種工廠方法計劃添加到Ninject的下一個版本中。以下的綁定將不再是必要的。

Bind<Func<IConfigurationView>>().ToMethod(ctx => (() => ctx.Kernel.Get<IConfigurationView>())); 
+0

對不起,你可以請我做一個例子,我將如何去做一個for循環。我在global.asax中執行綁定。不過,我在我的控制器中使用這個Mvc應用程序,我需要在for循環中新建對象。非常感謝 – user182630 2011-01-26 11:11:06

相關問題