【发布时间】: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