首页 > 解决方案 > Autofac、Android 和 Xamarin Forms == 未找到可访问的构造函数

问题描述

我有一个使用 .NET Standard 2.0 并利用 Autofac 进行 DI 的 Xamarin Forms 项目。

该项目适用于 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)

两者ISecureDatabaseServiceIReceiptQueuedSenderHandler在注册之前已在 Autofac 注册MainViewModel

知道这里发生了什么以及为什么在 iOS 和 UWP 上运行顺利而在 Android 上出现故障吗?

它可能与 Xamarin 表单中的链接有关吗?

我正在使用 Autofac 4.8。我也尝试过 Autofac 4.6.2,但结果相同。

标签: androidxamarin.formsautofac

解决方案


听起来它几乎肯定与 Forms 中的 Android 链接有关。我对此做了一场噩梦,直到​​我崩溃并为每个 Android 应用程序创建了一个 linker.xml 文件,如下所述:https ://docs.microsoft.com/en-us/xamarin/cross-platform/deploy-test/linker


推荐阅读