【问题标题】:Resolution failed exception in Xamarin IOS prismXamarin IOS prism中的解析失败异常
【发布时间】:2019-08-27 19:38:53
【问题描述】:

我有一个用 Xamarin 编写的 iOS 应用程序,当我尝试在 iOS 中运行该应用程序时,我收到 Unity Exceptions Resolution Failed 异常。但是,当我运行应用程序的 android 版本时,不会发生此错误。 prism 的初始化函数发生时抛出异常。

这是我的 app.xaml.cs 中的一个 sn-p

protected override void RegisterTypes(IContainerRegistry containerRegistry)
    {
        this.RegisterLocal(containerRegistry);
        this.RegisterServices(containerRegistry);  
        this.RegisterPagesForNavigation(containerRegistry);
    }

这段代码全部执行通过。

这是iOS初始化

Register("AppDelegate")]
public partial class AppDelegate : global::Xamarin.Forms.Platform.iOS.FormsApplicationDelegate
{
    public override bool FinishedLaunching(UIApplication app, NSDictionary options)
    {

        global::Xamarin.Forms.Forms.Init();

        PullToRefreshLayoutRenderer.Init();

        LoadApplication(new App(new IosInitializer()));

        return base.FinishedLaunching(app, options);
    }

    public class IosInitializer : IPlatformInitializer
    {
        public void RegisterTypes(IContainerRegistry containerRegistry)
        {
            containerRegistry.Register<IUAirshipUpdate, UAirshipUpdate>();
        }
    }

这段代码也会执行

抛出的异常是一个参数 null 异常,表明 IModuleCatelog 不存在。我不明白为什么它正在寻找那个模块并且找不到它。 GitHub 上的源代码表明该类已注册。

【问题讨论】:

  • 在您的App.xaml.cs 上实施RegisterTypes 背后的想法是什么?那应该是您注册页面和可能实现的其他服务的地方,我认为您不应该像那样注册容器本身。在 Prism 的入门指南中查看此部分:prismlibrary.github.io/docs/xamarin-forms/…
  • 寄存器类型调用列出的那些函数。我从不注册容器
  • 我的错,我匆忙阅读并回复

标签: xamarin xamarin.forms unity-container prism


【解决方案1】:

这个问题是因为 IOS 应用程序的链接器行为设置为完整的,这会导致 Unity IOC 容器出现问题。

【讨论】:

    猜你喜欢
    • 2020-04-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-07-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-11-16
    相关资源
    最近更新 更多