C# 使用IOC容器作为MVC5抛出的依赖项解析器';无法创建接口的实例';错误

C# 使用IOC容器作为MVC5抛出的依赖项解析器';无法创建接口的实例';错误,c#,asp.net-mvc,ninject,C#,Asp.net Mvc,Ninject,我试图简单地使用IOC容器(目前为ninject)作为MVC5的依赖项解析程序。 这在MVC4、visual studio 2012中曾经运行良好,但现在使用VS2013和MVC5,我无法让解析器在我的控制器中注入依赖项。这不是ninject特有的,我也尝试过SimpleInjector和Unity-同样的错误 我只是希望能够将这个类注入到我的主控制器中 public interface ITest { void dummyMethod(); }

我试图简单地使用IOC容器(目前为ninject)作为MVC5的依赖项解析程序。 这在MVC4、visual studio 2012中曾经运行良好,但现在使用VS2013和MVC5,我无法让解析器在我的控制器中注入依赖项。这不是ninject特有的,我也尝试过SimpleInjector和Unity-同样的错误

我只是希望能够将这个类注入到我的主控制器中

    public interface ITest
    {
        void dummyMethod();
    }


     public class Test : ITest
    {
            public void dummyMethod()
            {
            };
    }
这是依赖项解析程序

 public class NinjectDependencyResolver : IDependencyResolver
    {
        private IKernel kernel;
        public NinjectDependencyResolver()
        {
            kernel = new StandardKernel();
            AddBindings();
        }
        public object GetService(Type serviceType)
        {
        return kernel.TryGet(serviceType);
        }


            public IEnumerable<object> GetServices(Type serviceType)
            {
                 return kernel.GetAll(serviceType);
            }
            private void AddBindings()
            {
                kernel.Bind<ITest>().To<Test>();

            }
    }
这是我的家庭控制器

public class HomeController : Controller
{
    public ActionResult Index(ITest test)
    {
        return View();
    }
}
但当我运行这个程序时,我总是

Server Error in '/' Application.
Cannot create an instance of an interface. 
我也尝试过创建一个全新的项目(MVC5)——同样的错误

我尝试了MVC5,然后也升级到了5.2.2。同样的错误

非常感谢您的帮助。我认为,由于某种原因,永远不会调用解析器,即使我在

  kernel.Bind<ITest>().To<Test>();
kernel.Bind().To();

它就停在那里。。。。不知道发生了什么:(

通常,您不能将参数注入到操作方法中

您需要将依赖项注入到Consoller的构造函数中:

public class HomeController : Controller
{
    private readonly ITest test;

    public HomeController(ITest test)
    {
        this.test = this;
    }

    public ActionResult Index()
    {
        //use test here
        return View();
    }
}

无法向操作注入参数。您需要在构造函数中注入依赖项:
公共类HomeController:Controller{private ITest;public HomeController(ITest test){this.test=test:}public ActionResult Index(){//You test here return View();}}
噢,我的香裤子!!!!我不敢相信我错过了……愿比尔·盖茨的精神保佑你,先生!谢谢:)就是这样!“正常”是什么意思?我正在学习依赖项注入,我读到可以有构造函数注入和setter注入。@starsplusplus“正常”是关于ASP.NET MVC部分的,因为在那里你可以实现自定义
iactionvoker
,在那里你也可以实现动作参数的注入。但是,默认实现当然不支持它。所以你是对的,大多数依赖注入容器只支持构造函数和setter注入。我可以在控制器之外的其他地方使用依赖注入,例如我自己的类的构造函数吗?如果你能帮我做这件事,我将不胜感激。
public class HomeController : Controller
{
    private readonly ITest test;

    public HomeController(ITest test)
    {
        this.test = this;
    }

    public ActionResult Index()
    {
        //use test here
        return View();
    }
}