Autofac, Android и Xamarin Forms == Не найдено доступных конструкторов - PullRequest
0 голосов
/ 05 мая 2018

У меня есть проект Xamarin Forms, использующий .NET Standard 2.0, использующий Autofac для DI.

Проект предназначен для Android, iOS и UWP.

Когда я запускаю проект с iOS или UWP, все работает как положено.

При запуске в Android я получаю исключение " Не найдено доступных конструкторов ... " при попытке разрешить MainViewModel.

Регистрация: builder.RegisterType<MainViewModel>().AsSelf();

Разрешение MainViewModel:

public MainViewModel MainPage
{
    get
    {
        using (var scope = _container.BeginLifetimeScope())
        {
            return _container.Resolve<MainViewModel>();
        }
    }
}

Конструктор MainViewModel:

public MainViewModel(
    ISecureDatabaseService secureDb, 
    IReceiptQueuedSenderHandler receiptQueuedSenderHandler)

Оба ISecureDatabaseService и IReceiptQueuedSenderHandler зарегистрированы в Autofac до регистрации MainViewModel.

Есть идеи, что здесь происходит и почему все работает гладко с iOS и UWP и ломается на Android?

Может ли это быть связано со связыванием в формах Xamarin?

Я использую Autofac 4.8. Я тоже пробовал с Autofac 4.6.2, но с теми же результатами.

Ответы [ 2 ]

0 голосов
/ 06 мая 2018

Проблема действительно была проблемой связывания.

Чтобы исправить это, я следовал инструкциям в этом сообщении в блоге: Использование компоновщика в проектах Xamarin .

Специально для решения этой конкретной проблемы я добавил имя сборки проекта общих форм Xamarin .NET Standard 2.0 в раздел «Связывание» проекта Android:

enter image description here

0 голосов
/ 05 мая 2018

Похоже, это почти наверняка связано с линковкой Android в формах. У меня был кошмар с этим, пока я не сломался и не создал файл linker.xml для каждого приложения Android, как описано здесь: https://docs.microsoft.com/en-us/xamarin/cross-platform/deploy-test/linker

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...