Xamarin中的Ninject Portable导致NotImplementedException

时间:2017-09-10 12:05:32

标签: c# xamarin xamarin.forms ninject

当我在Xamarin.Forms应用程序中使用Portable.Ninject时,实例化StandardKernel总会产生NotImplementedException

我可以按照以下方式一致地复制问题:

  • 创建Xamarin.Forms应用程序(在VS2017中:跨平台应用程序(Xamarin))
  • 将其配置为使用 PCL
  • 我只对Android感兴趣,为了简洁起见,我删除了所有其他平台项目。
  • 将NuGet包 Portable.Ninject 添加到PCL和Android平台

然后,在App.xaml.cs中,我只需尝试以下操作:

public App()
{
    InitializeComponent();
    //ommitting NinjectModules for brevity
    var kernel = new Ninject.StandardKernel(); //exception is thrown here
    MainPage = new NavigationPage(new MainView());
}

我在这里缺少什么?

目前我使用的是Portable.Ninject版本3.3.1。 我还尝试了 XLabs.IoC.Ninject 包(它也使用了Portable.Ninject)并得到了相同的结果。

1 个答案:

答案 0 :(得分:1)

对于遇到同样问题的人:

tldr; 清理您的项目,并重建。

说明:起初我只将Ninject添加到我的PCL中,并且忘记将其添加到Android项目中。虽然我很快就将Ninject库添加到Android项目中,但它仍然会导致抛出异常。

解决方案是清理项目并重建它们。有时它就这么简单!