Classe de registre Castle Windsor avec parameters de constructeur

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 });