ninject.web.mvcアドオンASP.NET MVC 2で動作しない2
質問
私は使用しています Ninject.Web.Mvc
(MVC 2バージョン)ASP.NET MVCを使用したアドオン2.これは私の抜粋です Global.asax.cs
:
protected override void OnApplicationStarted()
{
AreaRegistration.RegisterAllAreas();
RegisterRoutes(RouteTable.Routes;
// RegisterAllControllersIn() is not available in the MVC 2 version of Ninject
}
protected override IKernel CreateKernel()
{
var kernel = new StandardKernel();
kernel.Bind<IRepository>().To<NHibernateRepository>();
return kernel;
}
私もベースを持っています RepositoryController
:
public class RepositoryController : Controller
{
protected IRepository Repository { get; set; }
public RepositoryController()
{
}
public RepositoryController(IRepository repository)
{
Repository = repository;
}
}
あなたが見ることができるように、それは非常にシンプルなセットアップです RepositoryController
のインスタンスで注入されることを期待しています IRepository
, 、およびninjectは、の具体的なインスタンスを使用するように構成されています NHibernateRepository
. 。ただし、これは機能しません Repository
プロパティは、コントローラーでアクセスしようとするたびにヌルです。ただし、代わりにこれにコードを変更した場合:
[Inject]
public IRepository Repository { get; set; }
その後、正常に動作します。コンストラクターの注入が機能しない理由を知っている人はいますか?
解決
パラメーターのないコンストラクターを削除してみてください。
Ninjectは、間違ったコンストラクターを選択して解決している可能性があります。
それをテストするために、両方のコンストラクターにブレークポイントを置いて、どちらが火が発生するかを確認できますが、パラメーターレスのものであると感じています。
所属していません StackOverflow