#xamarin #xamarin.forms #unity-container #prism
#xamarin #xamarin.forms #unity-контейнер #prism
Вопрос:
У меня есть приложение для iOS, написанное на Xamarin, и я получаю исключение Unity Exceptions Resolution Failed при попытке запустить приложение в iOS. Однако эта ошибка не возникает при запуске Android-версии приложения. Исключение генерируется во время выполнения функции инициализации из prism.
Вот фрагмент из моего приложения.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 указывает, что класс был зарегистрирован.
Комментарии:
1. Какая идея лежит в основе реализации
RegisterTypes
на вашемApp.xaml.cs
компьютере? Это должно быть место, где вы регистрируете свои страницы и другие сервисы, которые вы могли бы реализовать, я не думаю, что вам следует регистрировать сам контейнер подобным образом. Проверьте этот раздел в руководстве по началу работы Prism: prismlibrary.github.io/docs/xamarin-forms /…2. Регистровые типы вызывают те функции, которые перечислены. Я никогда не регистрирую контейнер
3. Мой плохой, я прочитал и ответил в спешке
Ответ №1:
Эта проблема была вызвана тем, что поведение компоновщика для приложения IOS было установлено на полное, и это вызывает проблемы с контейнером Unity IOC.