我已经通过Nuget安装了Ninject,其中包括Ninject,Ninject.Web.Common,Ninject.Web.Mvc(3)。我现在有一个问题,试图使用在NinjectWebCommon的RegisterServices中注册的服务不起作用,我得到上面的错误。这先前工作,所以我必须做一些事情,把整个事情搞砸了。有什么帮助吗?
我的代码如下。
命名空间NinjectTestProject.Controllers {
public interface ITest
{
string Test();
}
public class Tester : ITest
{
public string Test()
{
return "testing";
}
}
public class HomeController : Controller
{
private readonly ITest _test;
public HomeController(ITest test)
{
_test = test;
}
public ActionResult Test()
{
return Content(_test.Test());
}
}
}
服务注册NinjectWebCommon
...
/// <returns>The created kernel.</returns>
private static IKernel CreateKernel()
{
var kernel = new StandardKernel();
kernel.Bind<Func<IKernel>>().ToMethod(ctx => () => new Bootstrapper().Kernel);
kernel.Bind<IHttpModule>().To<HttpApplicationInitializationHttpModule>();
RegisterServices(kernel);
return kernel;
}
/// <summary>
/// Load your modules or register your services here!
/// </summary>
/// <param name="kernel">The kernel.</param>
private static void RegisterServices(IKernel kernel)
{
kernel.Bind<ITest>().To<Tester>();
}
答案 0 :(得分:0)
啊我刚刚找到了这一刻的方式。我简单地为MVC3重新安装了Ninject,它以某种方式解决了这个问题。
答案 1 :(得分:0)
您可以尝试遵循http://silesiaresearch.com/blog/BlogCSharp#Blog_20131204中描述的解决方案。基本上您需要使用自定义CreateKernel()
扩展DependencyResolver
方法,这意味着您的RegisteredServices()
方法应该有效。
它在我的网站上有效。但是我对同一症状有不同的原因。我的绑定工作正常,但MVC框架抱怨我的控制器中缺少默认构造函数。事实证明,我错过了已安装的名为Ninject.Mvc3
答案 2 :(得分:0)
我没有装配属性:
[assembly: PreApplicationStartMethod(typeof(NinjectWebCommon), "Start")]
[assembly: ApplicationShutdownMethod(typeof(NinjectWebCommon), "Stop")]