ninject - 为什么从 NuPack 生成的 NinjectMVC3.cs 无法编译? (或者 ASP.NET MVC 3 Beta 中的 MvcServiceLocator 发生了什么?)

标签 ninject asp.net-mvc-3 nuget

使用 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 已经消失了。我猜每当制作视频时都会出现版本不匹配的情况。

有很好的解释可用herehere .

使 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/

相关文章:

c# - Asp.net mvc3 中的自定义助手

asp.net-mvc - 直接nuget在哪里放置文件

nuget - 在 Xamarin PCL 项目中添加 Prism 引用会破坏 Windows Phone 8.1 和 UWP 上的构建

c# - 在两个服务的构造函数之间检测到循环依赖

windows-services - win服务中的ninject内核引用

.net - 使用装饰器模式的 Ninject 依赖注入(inject)

c# - 当页面长时间打开时,JQuery ajax 调用中断

wcf - 使用 WCF 服务的 Ninject Di 绑定(bind)

asp.net-mvc - asp.net mvc 的区域级安全性

servicestack - 为什么 ServiceStack.Text 没有被复制到 Bin?