首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >基于asp.net mvc 5控制器和上位机的Ninject

基于asp.net mvc 5控制器和上位机的Ninject
EN

Stack Overflow用户
提问于 2015-10-31 18:39:00
回答 1查看 915关注 0票数 0

我有asp.net mvc控制器和上控制器。我试着用ninject作为控制器和上位机。ninject为控制器工作,但对上控制器不起作用。

代码语言:javascript
复制
using System.Web.Mvc;
using MvcAPI_demo.Models;

namespace MvcAPI_demo.Controllers
{
    public class HomeController : Controller
    {
        private readonly IReservationRepository _repository;

        public HomeController(IReservationRepository repository)
        {
            _repository = repository;
        }

        //
        // GET: /Home/
        public ActionResult Index()
        {
            return View(_repository.GetAll());
        }
}


using System.Collections.Generic;
using System.Web.Http;
using MvcAPI_demo.Models;

namespace MvcAPI_demo.Controllers
{
    public class WebApiController : ApiController
    {
        private readonly IReservationRepository _repository;

        public WebApiController()
        {
        }

        public WebApiController(IReservationRepository repository)
        {
            _repository = repository;
        }

        public IEnumerable<Reservation> GetAllReservations()
        {
            return _repository.GetAll();
        }
}





using System;
using System.Collections.Generic;
using System.Web.Mvc;
using MvcAPI_demo.Models;
using Ninject;

namespace MvcAPI_demo.Infrastructure
{
    public class NinjectDependencyResolver : IDependencyResolver
    {
        private readonly IKernel _kernel;

        public NinjectDependencyResolver()
        {
        }

        public NinjectDependencyResolver(IKernel kernel)
        {
            _kernel = kernel;
            AddBinding();
        }

        private void AddBinding()
        {
            _kernel.Bind<IReservationRepository>().To<NonPersistReservationRepository>().InSingletonScope();
        }

        public object GetService(Type serviceType)
        {
            return _kernel.TryGet(serviceType);
        }

        public IEnumerable<object> GetServices(Type serviceType)
        {
            return _kernel.GetAll(serviceType);
        }
    }
}

NinjectWebCommon.cs

代码语言:javascript
复制
private static void RegisterServices(IKernel kernel)
        {
            DependencyResolver.SetResolver(new NinjectDependencyResolver(kernel));


        }  

当我试图调用/api/webapi时,需要一个默认的构造函数,如果我做了默认构造函数,就不会创建IReservationRepository的新实例。正常的MVC控制器工作正常。如何让他们一起工作?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-11-01 02:13:27

web有一个不同的Nuget包。

请参阅

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33455195

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档