我有这部分代码:
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),服务= [MyProject.Services.Navigation.INavigationService],Lifetime = Autofac.Core.Lifetime.CurrentScopeLifetime,Sharing = None,Ownership = OwnedByLifetimeScope ---&gt;找不到类型为'MyProject.Services.Navigation.NavigationService&#39;的可访问构造函数。 (见内心 详情除外。)
我的界面是空的,我的类也有无参数构造函数。 我的项目是使用.Net标准2.0的Xamarin.Forms项目,我的autofac版本是最后一个稳定版本(4.8.1)。
我很无能为力,因为所有的示例项目似乎都做得不多。
就像我说的那样,我清空了类和接口只是为了看问题是否来自那里,但我仍然有例外。
public interface INavigationService { }
public class NavigationService:INavigationService
{
public NavigationService()
{
}
}
答案 0 :(得分:0)
这可能听起来很愚蠢,但在我删除并重新创建项目后,它最终工作了。我确定它是相同的类,因为我只复制/粘贴。
唯一的区别是我在KO项目中的Autofac之前安装了其他nugets(例如:EntityFramework Sqlite)。在OK项目中,我的第一个nuget安装是Autofac。