xamarin - Autofac.Core.DependencyResolutionException 但一切都已注册
问题描述
我有这部分代码:
var _containerBuilder = new ContainerBuilder();
_containerBuilder.RegisterType<NavigationService>().As<INavigationService>();
var container = _containerBuilder.Build();
using (var scope = container.BeginLifetimeScope())
{
var navigationService = scope.Resolve<INavigationService>();
}
当我进行解析时,这会引发运行时异常:
Autofac.Core.DependencyResolutionException:在激活特定注册期间发生错误。有关详细信息,请参阅内部异常。注册:Activator = NavigationService (ReflectionActivator), Services = [MyProject.Services.Navigation.INavigationService], Lifetime = Autofac.Core.Lifetime.CurrentScopeLifetime, Sharing = None, Ownership = OwnedByLifetimeScope ---> 没有找到该类型的可访问构造函数'MyProject.Services.Navigation.NavigationService'。(有关详细信息,请参阅内部异常。)
我的接口是空的,我的类也是空的,它有一个无参数的构造函数。我的项目是使用 .Net 标准 2.0 的 Xamarin.Forms 项目,而我的 autofac 版本是最后一个稳定版本(4.8.1)。
我一无所知,因为所有示例项目似乎都没有做更多的事情。
就像我说的,我清空了类和接口只是为了看看问题是否来自那里,但我仍然有异常。
public interface INavigationService { }
public class NavigationService:INavigationService
{
public NavigationService()
{
}
}
解决方案
这听起来可能很愚蠢,但在我删除并重新创建我的项目后它最终工作了。我确定这是相同的课程,因为我只是复制/粘贴。
唯一的区别是我在 KO 项目中的 Autofac 之前安装了其他 nuget(例如:EntityFramework Sqlite)。在 OK 项目中,我的第一个 nuget 安装是 Autofac。
推荐阅读
- angular - Angular 10 - CommonJS 或 AMD 依赖项可能导致优化救助
- amazon-web-services - 如何将默认 VPC 添加到过去经典 EC2 实例中的区域?
- php - 扩展 DateTime 类
- webpack - Webpack - 如何在另一个 javascript 文件中要求一个条目包
- c# - 如何使用从返回数据表的方法返回的值?
- ruby-on-rails - ActiveStorage - Safari 缓存附件
- php - 允许根据设置的权限以及模型在 Laravel 中的属性值编辑模型
- selenium - ElementClickInterceptedException Selenium 无法单击按钮 Python
- python - QGroupBox 按钮未显示
- java - 如何使用 Criteria Builder Java 从另一个类属性内的类属性中选择一个元素?