【问题标题】:Ninject Portable in Xamarin results in NotImplementedExceptionXamarin 中的 Ninject Portable 导致 NotImplementedException
【发布时间】:2017-09-10 12:05:32
【问题描述】:

当我在 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)并得到了相同的结果。

【问题讨论】:

  • 这里有一个关于这个项目的样本:github.com/RobGibbens/Xamarin.IoC/tree/master/NinjectDemo
  • 感谢您的链接。那里非常有用的存储库。我检查了样本,除了我的应用程序中发生的事情之外,它没有做任何其他事情。它运行完美,而我的项目却没有。我检查了 csproj 文件中的差异,并没有发现什么特别之处。最后,我对我的项目进行了 CLEAN,构建它,瞧!魔法。不知何故,一个错误的 Ninject 版本一定已经潜入了我的 bin 文件夹。

标签: c# xamarin xamarin.forms ninject


【解决方案1】:

对于遇到同样问题的人:

tldr; 清理你的项目,然后重建。

解释:一开始我只是将 Ninject 添加到我的 PCL 中,而忘记将它添加到 Android 项目中。虽然我很快就将 Ninject 库添加到了 Android 项目中,但它仍然会导致抛出异常。

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-10-14
    • 2016-05-26
    • 2019-03-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多