Como chegar Castelo de Windsor ao construtor chamada sem parâmetros?
-
03-07-2019 - |
Pergunta
Atualmente tenho uma classe que se parece com isso:
public class MyClass : IMyClass
{
public MyClass()
{
//...
}
public MyClass(IMyRepository repository)
{
//...
}
}
No meu arquivo de configuração eu tenho IMyClass registrados, mas não IMyRepository. Minha intenção é para Windsor usar o construtor que não leva nenhum parâmetro, mas estou recebendo esta mensagem:
Não é possível criar 'MyClass' componentes como ele dependências tem de ser SATISIFIED. MyClass está aguardando o seguinte dependências:
Serviços: -. Namespace.IMyRepository que não foi registrado
outra post que diz que o recipiente vai chamar o construtor com a maioria dos argumentos que ele pode satisfazer. Então por que é tentar chamar o construtor com um argumento que ele não sabe como satisfazer?
Solução
Talvez você estiver usando uma versão antiga do Windsor ... isso funciona muito bem para mim:
[TestFixture]
public class WindsorTests {
public interface ISomeInterface {}
public class AService {
public int Id { get; private set; }
public AService() {
Id = 1;
}
public AService(ISomeInterface s) {
Id = 2;
}
}
[Test]
public void Parameters() {
var container = new WindsorContainer();
container.AddComponent<AService>();
var service = container.Resolve<AService>();
Assert.AreEqual(1, service.Id);
}
}