J’ai la classe suivante:
public class DatabaseFactory : Disposable, IDatabaseFactory where C : DbContext, BaseContext, new() { private C dataContext; private ssortingng connectionSsortingng; public DatabaseFactory(ssortingng connectionSsortingng) { this.connectionSsortingng = connectionSsortingng; } public C Get() { return dataContext ?? (dataContext = Activator.CreateInstance(typeof(C), new object[] {connectionSsortingng}) as C); } protected override void DisposeCore() { if (dataContext != null) dataContext.Dispose(); } }
Lorsque j’essaie de démarrer l’API Web, le message d’erreur suivant s’affiche:
Can't create component 'MyApp.DAL.Implementations.DatabaseFactory'1' as it has dependencies to be satisfied. 'MyApp.DAL.Implementations.DatabaseFactory'1' is waiting for the following dependencies: - Parameter 'connectionSsortingng' which was not provided. Did you forget to set the dependency?
Comment puis-je l’enregistrer correctement et comment passer le paramètre au moment de l’exécution?
Vous devez enregistrer le paramètre constructeur:
container.Register( Component.For().ImplementedBy() .DependsOn(Dependency.OnValue("connectionSsortingng", connectionSsortingng)) );
Vous pouvez définir des dépendances sur la méthode Resolve()
en ajoutant un type anonyme avec le nom du paramètre constructeur.
Exemple:
IDatabaseFactory factory = container.Resolve (new { connectionSsortingng = connectionSsortingng });