私は "Freeman pro asp.net mvc 5"の本(第7章)を使用しています。ASP.NET MVC + NinjectWebCommon
がNinjectWebCommon.csでコードが実行されることはありませんので、私は常にエラー取得しています:
問題がある「このオブジェクトのために定義されていませんパラメータなしのコンストラクタを。」 Webサーバーはこのファイルをまったく見ないようですが、私はすべてのメソッドにブレークポイントを持ち、アプリケーションを実行しているときに決してそれらに到達しません。
まず、本の説明書にすべて従って、自分でプロジェクトを作った。私はこのエラーがある。
第2に、公式サイトからコード例をダウンロードし、プロジェクトを開いて実行しようとしました。私はまだこのエラーがあります。
第3に、私は全く新しい単純なmvc5 + ninjectアプリケーションを作成しましたが、まだこのエラーがあります。
アイデア?
だから、明確にするために、単にこれらの手順: 1.私は、ソースコード 3をダウンロードしていますhttp://www.apress.com/us/book/9781430265290 2に行きます私はせずにVS 2015年に第7章から 4.ソースコードの例を開封しております[MissingMethodException:このオブジェクトにパラメータのないコンストラクタが定義されていません。] .. [InvalidOperationException:タイプが 'SportsStore'のコントローラを作成しようとしたときにエラーが発生しました。 .WebUI.Controllers.ProductController '。コントローラは、パラメータなしのパブリックコンストラクタを持っていることを確認してください]
コントローラコードは単純です:。
public class NinjectDependencyResolver : IDependencyResolver
{
private IKernel kernel;
public NinjectDependencyResolver(IKernel kernelParam)
{
kernel = kernelParam;
AddBindings();
}
public object GetService(Type serviceType)
{
return kernel.TryGet(serviceType);
}
public IEnumerable<object> GetServices(Type serviceType)
{
return kernel.GetAll(serviceType);
}
private void AddBindings()
{
Mock<IProductRepository> mock = new Mock<IProductRepository>();
mock.Setup(m => m.Products).Returns(new List<Product>
{
new Product {Name = "Football", Price = 25},
new Product {Name = "Surf board", Price = 179},
new Product {Name = "Running shoes", Price = 95}
});
kernel.Bind<IProductRepository>().ToConstant(mock.Object);
}
}
そして:
public class ProductController : Controller
{
private IProductRepository repository;
public ProductController(IProductRepository repository)
{
this.repository = repository;
}
public ViewResult List()
{
return View(repository.Products);
}
}
次に、私は、コードに依存リゾルバの私の独自の実装を持っています最後に、NinjectWebCommonクラスでこのように使用します:
private static void RegisterServices(IKernel kernel)
{
System.Web.Mvc.DependencyResolver.SetResolver(new Infrastructure.NinjectDependencyResolver(kernel));
}
コントローラのコードを掲載してください。 –
@OwenPaulingなぜですか?とにかく、投稿に追加 – megohm