Xamarin IOS 棱镜中的解析失败异常
Resolution failed exception in Xamarin IOS prism
我有一个用 Xamarin 编写的 iOS 应用程序,当我尝试 运行 iOS 中的应用程序时,出现了 Unity Exceptions Resolution Failed 异常。但是,当我 运行 应用程序的 android 版本时,不会发生此错误。 prism 的 initalize 函数正在执行时抛出异常。
这是我的 app.xaml.cs
的片段
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>();
}
}
这段代码也执行
抛出的异常是参数空异常,表明 IModuleCatelog 不存在。我不明白为什么它正在寻找那个模块并且找不到它。 GitHub 上的源代码表明 class 已注册。
此问题是由于 IOS 应用程序的链接器行为设置为完整而导致 Unity IOC 容器出现问题。
我有一个用 Xamarin 编写的 iOS 应用程序,当我尝试 运行 iOS 中的应用程序时,出现了 Unity Exceptions Resolution Failed 异常。但是,当我 运行 应用程序的 android 版本时,不会发生此错误。 prism 的 initalize 函数正在执行时抛出异常。
这是我的 app.xaml.cs
的片段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>();
}
}
这段代码也执行
抛出的异常是参数空异常,表明 IModuleCatelog 不存在。我不明白为什么它正在寻找那个模块并且找不到它。 GitHub 上的源代码表明 class 已注册。
此问题是由于 IOS 应用程序的链接器行为设置为完整而导致 Unity IOC 容器出现问题。