這個問題是不是特別相關,Ninject。它更像是一個普通的編碼問題,但我在這裏張貼的情況下有可能完全處理在Ninject的問題,比什麼,我試圖做一個更好的辦法。訪問Ninject內核全局
我想知道是否有可能在全球範圍內訪問Ninject標準內核,其在Global.asax中的實例。
下面是代碼:
public class MvcApplication : NinjectHttpApplication
{
protected override void OnApplicationStarted()
{
base.OnApplicationStarted();
// MVC global registration, routing and filtering code goes here...
}
protected override IKernel CreateKernel()
{
return Container;
}
private static IKernel Container
{
get
{
IKernel kernel = new StandardKernel();
kernel.Load(new ServiceModule(), new RepositoryModule());
return kernel;
}
}
}
如果我有一些類,例如,不與控制器,在這裏我想開始一個依賴鏈接口門面類,我的理解是,我應該用途:
_className = kernel.Get<IClassName>();
但是,我知道要做到這一點的唯一方法是創建Ninject標準內核的新實例,但如果我理解正確的話,是不是要創建一個新的實例是個好主意Ninject內核,因爲那基本上是創建第二個ke rnel。
那麼,是不是可以訪問現有的內核是在Global.asax中在應用程序啓動實例,從任何地方在我的應用程序,或者是完全有更好的方法來做到這一點?
問候,
弗雷德酒莊
你碰巧知道如何爲工廠設置會影響MVC擴展實現? – 2013-03-12 03:38:32
可悲的是這部分我不知道沒有嘗試它。由於獨特的關注點和架構選擇,我使用上面列出的包裝方法來處理正在處理的應用程序。 – Kaiser12 2013-03-12 11:24:15