首页 > 解决方案 > 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()
      { 
      }

 }

标签: xamarinautofac

解决方案


这听起来可能很愚蠢,但在我删除并重新创建我的项目后它最终工作了。我确定这是相同的课程,因为我只是复制/粘贴。

唯一的区别是我在 KO 项目中的 Autofac 之前安装了其他 nuget(例如:EntityFramework Sqlite)。在 OK 项目中,我的第一个 nuget 安装是 Autofac。


推荐阅读