Ninject StandardKernel System.ArgumentNullException:value不能为null。参数名称:path1

时间:2018-05-29 11:28:31

标签: xamarin ninject

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

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

我收到以下错误:

  

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

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

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

3 个答案:

答案 0 :(得分:3)

我个人认为, Ninject Ninject.PCL 软件包都存在错误

尝试使用 NinjectSettings 构建 StandardKernel

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

致谢

答案 1 :(得分:2)

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

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

我希望这对那些可能犯同样错误的人有所帮助并节省时间!

答案 2 :(得分:0)

Emmanuel DURIN对于在Xamarin.Forms .Net Standard中使用Ninject 3.3.4给出了正确的答案。

  

var settings = new Ninject.NinjectSettings(){LoadExtensions = false};   内核=新的StandardKernel(设置,新的ViewModelsModule());

代替

  

内核=新的StandardKernel(新的ViewModelsModule());