使用 NuPack 插件并安装 NInject MVC 3 包会导致生成的 NinjectMVC3.cs
文件中出现以下编译错误。
名称“MvcServiceLocator”在当前上下文中不存在
sample video David Ebbo 发布的帖子显示了它 working just fine at 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));
}
}
最佳答案
基本上,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);
}
}
并将以下行添加到 gloabl.asax.cs
App_Start()
DependencyResolver.SetResolver(new NinjectResolver());
关于ninject - 为什么从 NuPack 生成的 NinjectMVC3.cs 无法编译? (或者 ASP.NET MVC 3 Beta 中的 MvcServiceLocator 发生了什么?),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3875457/