asp.net WebフォームにNinjectまたはDIを実装するにはどうすればよいですか? にある次の解決策を試しました。(ジェイソンの答え)
- 新しい ASP.NET WebForms プロジェクトを作成する
- NuGet を使用して Ninject.Web ライブラリを追加します (これにより、Ninject.Web.Common および Ninject ライブラリもダウンします)。
- カスタム バインドを App_Start / NinjectWebCommon.cs / RegisterServices メソッドに登録します。
- ページで属性注入を使用する
ASP.NET Web アプリケーションでうまく機能します。
問題は、Web アプリケーションではなく、 ASP.NET Web サイトで DI に Ninject を使用したいということです。
NinjectWebCommon / RegisterServices にカスタム バインディングを登録しました。
private static void RegisterServices(IKernel kernel)
{
kernel.Bind<ITestRepository>().To<TestRepository>();
}
Webページで私はそれを注入します:
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());
}
}
常に null 参照例外をスローし、Web アプリケーションとは異なり、NinjectWebCommon.cs 内のブレークポイントに到達することはありません。
Web サイトで Ninject 3 を機能させるには、他に何をする必要がありますか?