Jed*_*dja 7 ninject nuget asp.net-mvc-3
使用NuPack插件并安装NInject MVC 3包会导致生成的NinjectMVC3.cs文件中出现以下编译错误.
The name 'MvcServiceLocator' does not exist in the current context
David Ebbo发布的示例视频显示它在09:43运行得很好.
这是当前生成的类:
public class NinjectMVC3 {
public static void RegisterServices(IKernel kernel) {
//kernel.Bind<IThingRepository>().To<SqlThingRepository>();
}
public static void SetupDependencyInjection() {
// Create Ninject DI Kernel
IKernel kernel = new StandardKernel();
// Register services with our Ninject DI Container
RegisterServices(kernel);
// Tell ASP.NET MVC 3 to use our Ninject DI Container
MvcServiceLocator.SetCurrent(new NinjectServiceLocator(kernel));
}
}
Run Code Online (Sandbox Code Playgroud)
Jed*_*dja 13
基本上,MvcServiceLocator已经消失了.我想,每当制作视频时,版本都会出现版本不匹配的情况.
使Ninject工作的两个步骤如下.替换NinjectMVC3为以下(我也更改了不必要的名称):
public class NinjectResolver : IDependencyResolver
{
private static IKernel kernel;
public NinjectResolver()
{
kernel = new StandardKernel();
RegisterServices(kernel);
}
public static void RegisterServices(IKernel kernel)
{
//kernel.Bind<IThingRepository>().To<SqlThingRepository>();
}
public object GetService(Type serviceType)
{
return kernel.TryGet(serviceType);
}
public IEnumerable<object> GetServices(Type serviceType)
{
return kernel.GetAll(serviceType);
}
}
Run Code Online (Sandbox Code Playgroud)
和下面的行添加到App_Start()在gloabl.asax.cs
DependencyResolver.SetResolver(new NinjectResolver());
Run Code Online (Sandbox Code Playgroud)
我修复了包并将其上传到Feed.如果你有机会尝试并验证它现在有效,那就太好了.我将Ninject.MVC3的版本从0.1增加到0.2 :)