Domanda

Attualmente ho una classe che assomiglia a questa:

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

Nel mio file di configurazione ho registrato IMyClass, ma non IMyRepository. La mia intenzione è che Windsor usi il costruttore che non accetta parametri, ma sto ricevendo questo messaggio:

  

Impossibile creare il componente 'MyClass' così com'è   ha delle dipendenze da soddisfare.   MyClass è in attesa di quanto segue   dipendenze:

     

Servizi:   - Namespace.IMyRepository che non è stato registrato.

Ho trovato un altro post che dice che il contenitore chiamerà il costruttore con il maggior numero di argomenti che può soddisfare. Quindi perché sta cercando di chiamare il costruttore con un argomento che non sa come soddisfare?

È stato utile?

Soluzione

Forse stai usando una vecchia versione di Windsor ... per me funziona benissimo:

[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);
    }
}
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top