Pregunta

Actualmente tengo una clase que se ve así:

public class MyClass : IMyClass
{
   public MyClass()
   {
      //...
   }
   public MyClass(IMyRepository repository)
   {
      //...
   }
}

En mi archivo de configuración tengo IMyClass registrado, pero no IMyRepository. Mi intención es que Windsor use el constructor que no toma ningún parámetro, pero recibo este mensaje:

  

No se puede crear el componente 'MyClass' ya que   tiene dependencias por satisfacer.   MyClass está esperando lo siguiente   dependencias:

     

Servicios:   - Namespace.IMyRepository que no estaba registrado.

Encontré otra publicación que dice que el contenedor llamará al constructor con la mayor cantidad de argumentos que pueda satisfacer. Entonces, ¿por qué está tratando de llamar al constructor con un argumento que no sabe cómo satisfacer?

¿Fue útil?

Solución

Tal vez estás usando una versión antigua de Windsor ... esto funciona bien para mí:

[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 bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top