【问题标题】:Ninject StandardKernel System.ArgumentNullException: value cannot be null. Parameter name: path1Ninject StandardKernel System.ArgumentNullException:值不能为空。参数名称:path1
【发布时间】:2018-05-29 11:28:30
【问题描述】:

我是一名正在学习的Xamarin,我想将Ninject 用于IoC 容器和依赖注入。我在Visual studio 2017 社区上使用NuGet 包添加了Ninject 3.3.4。我在 App.Xaml.cs 中的以下代码行收到错误:

Kernel = new StandardKernel(new TripLogCoreModule(), new TripLogNavModule(mainPage.Navigation));

我收到以下错误:

Ninject StandardKernel System.ArgumentNullException: 值不能 空值。参数名称:path1

我在互联网上花了大约 2 个小时,但找不到解决问题的方法。

最后,我发现了自己的疏忽,所以我想发布这个问题并回答我自己的问题,以防其他人(像我这样的新手)犯这个错误。

【问题讨论】:

    标签: xamarin ninject


    【解决方案1】:

    就我个人而言,NinjectNinject.PCL 软件包都出现了错误

    尝试使用 NinjectSettings 构建 StandardKernel

    var settings = new Ninject.NinjectSettings() { LoadExtensions = false };
    Kernel = new StandardKernel(settings, new ViewModelsModule());
    

    问候

    【讨论】:

      【解决方案2】:

      我的疏忽是我安装了错误的软件包。我应该安装Portable.Ninject

      为了解决这个问题,我从所有项目中卸载了Ninject3.3.4,然后通过 NuGet 包安装了Portable.Ninject 3.3.1(撰写本文时的最新稳定版本)。

      我希望这对可能犯类似错误的人有所帮助并节省时间!

      【讨论】:

      • 是的,但这与 .net 标准类库不兼容
      【解决方案3】:

      Emmanuel DURIN 对于将 Ninject 3.3.4 与 Xamarin.Forms .Net Standard 结合使用有正确的答案。

      var settings = new Ninject.NinjectSettings() { LoadExtensions = false }; Kernel = new StandardKernel(settings, new ViewModelsModule());

      而不是

      Kernel = new StandardKernel(new ViewModelsModule());

      【讨论】:

        猜你喜欢
        • 2017-05-11
        • 1970-01-01
        • 1970-01-01
        • 2019-08-17
        • 2018-06-03
        • 2010-11-11
        • 1970-01-01
        • 2021-10-23
        • 1970-01-01
        相关资源
        最近更新 更多