私の現在のスタックはASP.NETMVC4とEntityFramework5.0です。NuGetでninject.mvc3をインストールしましたが、以下に示すコードは正常に機能します。
public class SessionsController : Controller
{
// use "kernel.Bind<MyContext>().ToSelf().InRequestScope();"
// to inject MyContext
private MyContext _context;
public SessionsController(MyContext context)
{
_context = context;
}
[HttpGet]
public ActionResult Login()
{
System.Diagnostics.Debug.WriteLine(_context.Users.Count());
return View();
}
}
}
ここで、コントローラーのBaseControllerを抽出します。
public class BaseController : Controller
{
protected MyContext _context;
public BaseController(MyContext context)
{
_context = context;
}
// I don't know what should be write here and
// base controller must have a parameterless constructor
public BaseController()
{
}
}
次に、SessionsControllerをBaseControllerから継承させます。コードを実行すると、例外がスローされました
「オブジェクト参照がオブジェクトのインスタンスに設定されていません。(MyContextを使用)」
Ninjectを間違って使用しますか?
--更新--ninjectのNinjectWebCommon.csのコード
/// <summary>
/// Load your modules or register your services here!
/// </summary>
/// <param name="kernel">The kernel.</param>
private static void RegisterServices(IKernel kernel)
{
kernel.Bind<TelesingContext>().ToSelf().InRequestScope();
}
--更新-編集されたSessionsController.csコード
public class SessionsController : BaseController
{
[HttpGet]
public ActionResult Login()
{
System.Diagnostics.Debug.WriteLine(_context.Users.Count());
return View();
}
}
}