Dans un test unitaire je résous une interface avec l'envoi d'arguments pour son constructeur comme ci-dessous:Château windsor - Impossible d'enregistrer un composant approprié avec argumants
var args = new { arg1 = "arg1 value", arg2 = "arg2 value" };
var component = container.Resolve<IMyDependency>(args);
et il fonctionne très bien. Mais maintenant, je veux le faire dans l'injection de constructeur, par exemple dans:
public class Foo
{
private IMyDependency _dep;
public Foo(IMyDependency dep) { _dep = dep; }
}
Donc, comme essayer je l'enregistrer avec UsingFactoyMethod()
comme ceci:
public class BarInstaller : IWindsorInstaller
{
public void Install(IWindsorContainer container, IConfigurationStore store)
{
container.Register(
Component.For<IMyDependency>().UsingFactoryMethod(
() =>
{
var args = new { arg1 = "arg1 value", arg2 = "arg2 value" };
var result = container.Resolve<IMyDependency>(args);
return result;
}).LifestyleTransient());
// + some other registerations and installs
}
}
Mais j'ai encore erreur:
Can't create component 'namespace.MyDependency' as it has dependencies to be satisfied.
'namespace.MyDependency' is waiting for the following dependencies:
- Parameter 'arg1' which was not provided. Did you forget to set the dependency?
- Parameter 'arg2' which was not provided. Did you forget to set the dependency?
Lorsque je vérifie, MyDependency est également enregistré dans d'autres enregistrements. –