Autofac Aucun des constructeurs trouvés avec 'Autofac.Core.Activators.Reflection.DefaultConstructorFinder'
Aucun des constructeurs trouvé avec " Autofac.De base.Activateurs.De la réflexion.DefaultConstructorFinder' type 'LMS.Services.De sécurité.EncryptionService " peut être invoquée avec les services disponibles et les paramètres:
Ne peut pas régler le paramètre 'LMS.Modèles.SecuritySettings securitySettings' de constructeur " Void .ctor(LMS.Modèles.SecuritySettings)'
Voici les fichiers de code
Classe De Service
public class EncryptionService : IEncryptionService
{
private readonly SecuritySettings _securitySettings;
public EncryptionService(SecuritySettings securitySettings)
{
this._securitySettings = securitySettings;
}
}
Programme d'amorçage
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));
}
C'était de travailler plus tôt. Mais quand j'ai présenté le EncryptionService
mise en œuvre, je reçois l'erreur ci-dessus.
Voici l'autre code de travail mise en œuvre comme suit
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
}
source d'informationauteur pbhalchandra
Vous devez vous connecter pour publier un commentaire.
Quand Autofac essayer de résoudre
EncryptionService
il tente de résoudre unSecuritySettings
service mais Autofac n'est pas au courant d'une telle inscription.Pour résoudre cette erreur, vous devez vous inscrire à un
SecuritySettings
mise en œuvre.Par exemple :
Vous pouvez également régler Autofac du comportement pour qu'il fonctionne comme prévu initialement [et les aligner avec les valeurs par défaut de certains autres contenants] par l'ajout de la
AnyConcreteTypeNotAlreadyRegisteredSource
(voir les docs pour les Sources):-J'ai utilisé ce système avec délégué usines et implicite des Types de Relations à beaucoup d'enlever explicite de l'enregistrement à partir d'une suite d'applications mais comme vous semblez le tohave allé en bas de la route de l'explicite (boilerplaty :P) l'enregistrement que je recommanderais à googler
AnyConcreteTypeNotAlreadyRegisteredSource
pour voir si un plan plus général peut s'adapter à ce que vous êtes à la recherche pour le mieux.dans mon cas, je n'ai pas enregistré le contexte. Je me suis inscrit le contexte et il a travaillé pour moi