android - 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)
两者ISecureDatabaseService
和IReceiptQueuedSenderHandler
在注册之前已在 Autofac 注册MainViewModel
。
知道这里发生了什么以及为什么在 iOS 和 UWP 上运行顺利而在 Android 上出现故障吗?
它可能与 Xamarin 表单中的链接有关吗?
我正在使用 Autofac 4.8。我也尝试过 Autofac 4.6.2,但结果相同。
解决方案
听起来它几乎肯定与 Forms 中的 Android 链接有关。我对此做了一场噩梦,直到我崩溃并为每个 Android 应用程序创建了一个 linker.xml 文件,如下所述:https ://docs.microsoft.com/en-us/xamarin/cross-platform/deploy-test/linker
推荐阅读
- c++ - 如何使用 lambda 替换 std::bind
- r - 计算每个类别(机器)的日期范围重叠的次数
- mysql - 如何将 3 个查询合二为一,并在每个表中加入并计数一行?
- email - 纯文本电子邮件无法显示非 ASCII 字符?
- r - 是否可以重命名列表中的多个列表名称?
- django - 按降序反转评论列表以获得django模板中的最后n(2)个对象
- python-3.x - 如何与 ThreadPoolExecutor & Queue 并发运行
- bash - 运行 bash 脚本时如何验证是否缺少所需的命令?
- react-native - 是否可以在@react-navigation/stack 中保留屏幕?
- typescript - 无法在组件内使用 useDispatch()