私はMVCについて少し勉強しようとしており、Ninjectを使用しているときに問題を見つけました。私はリポジトリをバインドしたいが、 'オブジェクト参照がオブジェクトのインスタンスに設定されていない'というエラーが発生し続ける。ASP MVC 2 Ninject
私は私のNinjectControllerFactory作成した:
public class NinjectControllerFactory : DefaultControllerFactory
{
// A Ninject "kernel" is the thing that can supply object instances
private IKernel kernel = new StandardKernel(new SportsShopServices());
// ASP .NET MVC calls this to get the controller for each request
protected override IController GetControllerInstance(RequestContext context, Type controllerType)
{
if (controllerType == null)
return null;
return (IController) kernel.Get(controllerType);
}
// Configure how abstract sevice types are mapped to concrete implementations
private class SportsShopServices : NinjectModule
{
public override void Load()
{
Bind<IProductRepository>().To<SqlProductsRepository>()
.WithConstructorArgument("connectionString",
ConfigurationManager.ConnectionStrings["AppDb"].ConnectionString);
}
}
}
と私のコントローラ:私は、DB接続文字列を提供するために、Web.configファイルを変更したとGlobal.asaxのは(のApplication_Startファイル
public class ProductsController : Controller
{
private IProductRepository productsRepository;
// Constructor used with Ninject
public ProductsController(IProductRepository _productsRepository)
{
this.productsRepository = _productsRepository;
}
public ViewResult List()
{
return View(productsRepository.Products.ToList());
}
}
を)メソッドに含める:
ControllerBuilder.Current.SetControllerFactory(new NinjectControllerFactory());
私はexampl eをPRO ASP .NET MVC 2の本から削除しましたが、この作業を終わらせることはできません。
に従っているあなたは、再構築しようとしましたか?また、あなたのソリューションに "SqlProductsRepository"クラスがありますか? – donhack
ええ、再構築を試みました。 SqlProductsRepositoryはそこにあり、データベースから製品のテーブルを構築して返します。 – Apollo