我正在学习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个小时,无法找到问题的解决方案。
最后,我发现了我所做的疏忽,所以我想发布这个问题并回答我自己的问题,以防其他人(像我这样的新手)犯了这个错误。
答案 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());