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?

Foi útil?

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);
    }
}
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top