Ошибка разрешения исключения в Xamarin IOS prism

#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.