Autofacc未使用'Autofac.Core.Activators.Reflection.DefaultConstructorFinder'找到任何构造函数

Autofac None of the constructors found with #39;Autofac.Core.Activators.Reflection.DefaultConstructorFinder#39;(Autofacc未使用#39;Autofac.Core.Activators.Reflection.DefaultConstructorFinder#39;找到任何构造函数)

本文介绍了Autofacc未使用'Autofac.Core.Activators.Reflection.DefaultConstructorFinder'找到任何构造函数的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

无法使用可用的服务和参数调用类型为‘LMS.Services.Security.EncryptionService’的带有‘Autofac.Core.Activators.Reflection.DefaultConstructorFinder’的构造函数: 无法解析构造函数"void.ctor(LMS.Models.SecuritySettings)"的参数""LMS.Models.SecuritySetting""

以下是代码文件

服务等级

public class EncryptionService : IEncryptionService
{
    private readonly SecuritySettings _securitySettings;
    public EncryptionService(SecuritySettings securitySettings)
    {
        this._securitySettings = securitySettings;
    }
}

引导程序

private static void SetAutofacContainer()
{
    var builder = new ContainerBuilder();
    builder.RegisterControllers(Assembly.GetExecutingAssembly());
    builder.RegisterType<UnitOfWork>().As<IUnitOfWork>().InstancePerRequest();
    builder.RegisterType<DatabaseFactory>().As<IDatabaseFactory>().InstancePerRequest();

    builder.RegisterAssemblyTypes(typeof(CourseRepository).Assembly)
           .Where(t => t.Name.EndsWith("Repository"))
           .AsImplementedInterfaces()
           .InstancePerRequest();

    builder.RegisterAssemblyTypes(typeof(CourseService).Assembly)
           .Where(t => t.Name.EndsWith("Service"))
           .AsImplementedInterfaces()
           .InstancePerRequest();

    builder.RegisterFilterProvider();
    var container = builder.Build();
    DependencyResolver.SetResolver(new AutofacDependencyResolver(container));
}

早些时候它起作用了。但是当我引入EncryptionService实现时,我收到了上面的错误。 下面是另一个可用的代码实现,如下所示

public class CourseService : ICourseService
{
    #region Fields

    private readonly IRepository<Course> _courseRepository;
    private readonly IUnitOfWork _unitOfWork;

    #endregion

    #region ctor

    public CourseService(IRepository<Course> courseRepository, IUnitOfWork unitOfWork)
    {
        _courseRepository = courseRepository;
        _unitOfWork = unitOfWork;
    }
    #endregion
}

推荐答案

Autofac尝试解析EncryptionService时,它尝试解析SecuritySettings服务,但Autofac不知道此类注册。

要解决此错误,应注册SecuritySettings实现。

例如:

builder.RegisterType<SecuritySettings>()
       .As<SecuritySettings>(); 

这篇关于Autofacc未使用&#39;Autofac.Core.Activators.Reflection.DefaultConstructorFinder&#39;找到任何构造函数的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!

本文标题为:Autofacc未使用&#39;Autofac.Core.Activators.Reflection.DefaultConstructorFinder&#39;找到任何构造函数

基础教程推荐