我試着在How can I implement Ninject or DI on asp.net Web Forms?發現了以下解決方案(賈森的回答)依賴注入與Ninject 3 ASP.NET網站
- 創建一個新的ASP.NET Web窗體項目
- 使用的NuGet添加Ninject。網絡LIB(這也將拉低Ninject.Web.Common和Ninject庫)
- 註冊您的自定義綁定在App_Start/NinjectWebCommon.cs/RegisterServices方法
- 使用屬性:在您的網頁注入
在ASP.NET Web應用程序中很有效。
問題是我想在ASP.NET 網站中使用Ninject for DI,而不是Web應用程序。
我註冊NinjectWebCommon/RegisterServices自定義綁定:
private static void RegisterServices(IKernel kernel)
{
kernel.Bind<ITestRepository>().To<TestRepository>();
}
在網頁中我把它注射:
public partial class _Default : System.Web.UI.Page
{
[Inject]
public ITestRepository _repository { get; set; }
protected void Page_Load(object sender, EventArgs e)
{
System.Diagnostics.Trace.WriteLine(_repository.ExecuteOperation());
}
}
它總是拋出一個空引用異常和內部NinjectWebCommon.cs是斷點從未到達過 - 與Web應用程序不同。
還應該做什麼使Ninject 3在網站上工作?
請注意,由於調試器太晚,所以會觸發斷點。如果你在'kernel.Bind <...> ...'之前編寫'Debugger.Break()',它會觸發該行。 – nebffa 2014-06-26 01:50:42