Question

Actuellement, j'ai une classe qui ressemble à ceci:

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

Dans mon fichier de configuration, j'ai enregistré IMyClass, mais pas IMyRepository. Mon intention est que Windsor utilise le constructeur qui ne prend aucun paramètre, mais je reçois ce message:

  

Impossible de créer le composant "MyClass" tel quel.   a des dépendances à satisfaire.   MyClass attend le suivant   dépendances:

     

Services:   - Namespace.IMyRepository qui n'a pas été enregistré.

J'ai trouvé un autre message indiquant que le conteneur appellera le constructeur avec le plus d'arguments qu'il peut satisfaire. Alors, pourquoi tente-t-il d’appeler le constructeur avec un argument qu’il ne sait pas comment satisfaire?

Était-ce utile?

La solution

Peut-être que vous utilisez une ancienne version de Windsor ... cela fonctionne très bien pour moi:

[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);
    }
}
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top