2011-03-11 57 views
1

我正在使用Ninject(一個MVC Web應用程序)開發我的第一個項目,並且對Ninject的正確/最佳使用有疑問。有關Ninject實現的建議

我已經設置了一個NinjectModule,它將接口綁定到具體類,但現在我想在我的代碼中創建接口對象的實例。爲了實現這一點,我寫了下面的方法:

public class NinjectControllerFactory : DefaultControllerFactory { 

    private class MyServices : NinjectModule { 
    ... 
    } 

    public static IMyRepository GetMyRepository() 
    { 
     IKernel kernel = new StandardKernel(new MyServices()); 
     return kernel.Get<IMyRepository>(); 
    } 
} 

,這似乎很好地工作......

IMyRepository tempDB = ControllerFactory.GetRoomarRepository(); 

我的問題是,這種正確的/最佳的方式來實現的結果,我尋找?我猜我擔心創建內核實例的開銷。

回答

2

閱讀文檔:https://github.com/ninject/ninject.web.mvc/wiki/MVC3並查看示例項目。

+0

謝謝Remo。提前道歉,但我想我可能會嘗試你的耐心......假設我有一個接口,並且我有兩個類來實現該接口。在我的代碼中,我想創建一個簡單的控制檯應用程序(例如),該接口的一個實例。你/你/你應該根據NinjectModule從字面上定義一個類,然後創建一個Ninject StandardKernel對象並將其用於Get()具體實例嗎? – Neilski 2011-03-11 15:45:35

+0

通常沒有在應用程序的引導程序中配置一個內核。它儘可能少使用。許多應用程序只需一次調用即可創建所有必要的服務。在MVC3的情況下,你根本不需要任何呼叫。 – 2011-03-11 16:40:31