Ninject.Web.Mvc
ASP.NET MVC 2で(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
、コントローラーでアクセスしようとすると、プロパティはnullになります。ただし、代わりにコードをこれに変更すると、次のようになります。
[Inject]
public IRepository Repository { get; set; }
その後、正常に動作します。コンストラクターインジェクションが機能しない理由を誰かが知っていますが、プロパティインジェクションは機能していますか?