我已經開始在ASP.NET MVC 3項目中使用Ninject,使用nuget包附帶的標準引導過濾器,如下所示。Ninject-在N層MVC3應用程序的域模型層中設置綁定的正確方法是什麼?
/// <summary>
/// Load your modules or register your services here!
/// </summary>
/// <param name="kernel">The kernel.</param>
private static void RegisterServices(IKernel kernel)
{
// Documentation for setting up Ninject in ASP.NET MVC3 app:
// https://github.com/ninject/ninject.web.mvc/wiki/Setting-up-an-MVC3-application
// Add bindings here. No modules required unless we need to add in further
// separation of concerns.
kernel.Bind<ISessionManager>().To<SessionManager>();
kernel.Bind<ICookieManager>().To<CookieManager>();
kernel.Bind<ILogManager>().To<LogManager>();
kernel.Bind<IStringOutput>().To<StringOutput>();
}
在我的域模型層,有一個叫CookieManager
類。在我的CookieManager
課程中,我使用的是名爲SecureObjectSerializer
的課程。
我想要使用依賴注入,以便CookieManager
沒有嚴格綁定到SecureObjectSerializer
。
我不希望MVC項目必須瞭解SecureObjectSerializer,設置綁定等。這似乎是對我來說太離譜了。
但是,我認爲在Domain Model層中,CookieManager應該以DI方式傳入SecureObjectSerializer。
我的問題:
有綁定註冊在域模型層,我應該創建域模型層內的Ninject引導程序?如果是這樣,我應該如何觸發這一點。我會提供一個鉤子,並在MVC項目中調用類似
DomainModel.BindModelDependencies(kernel);
的東西。當需要解析對象的新實例時,這段代碼是什麼樣的?使用MVC引導程序時有點隱藏?
謝謝。 「只是把它作爲一個論點」 - 在哪裏?在MVC中,這很好,但是當我想在MVC項目之外創建一個對象的實例時呢?你能提供一個更詳細的代碼示例嗎? – gb2d 2012-03-20 11:57:36
你是指在你的域名代碼或網頁代碼? – AaronHS 2012-03-20 11:59:51
,如果你的意思是你的域代碼,那麼正在執行的代碼在哪裏? – AaronHS 2012-03-20 12:01:51