Frage

Zur Zeit habe ich eine Klasse, die wie folgt aussieht:

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

In meiner Config-Datei habe ich IMyClass registriert, aber nicht IMyRepository. Meine Absicht ist es für Windsor den Konstruktor zu verwenden, die keine Parameter nehmen, aber ich bin immer diese Meldung:

  

kann nicht erstellt werden Komponente ‚MyClass‘, wie es   hat Abhängigkeiten satisified werden.   MyClass wartet auf die folgenden   Abhängigkeiten:

     

Dienstleistungen:   -. Namespace.IMyRepository, die nicht registriert wurde,

Ich fand einen anderen Posten , die dass der Behälter sagt den Konstruktor mit den meisten Argumente nennen, die sie erfüllen kann. Warum also wird es versuchen, den Konstruktor mit einem Argument zu nennen, dass sie nicht weiß, wie zufrieden zu stellen?

War es hilfreich?

Lösung

Vielleicht eine alte Version von Windsor Sie verwenden ... das funktioniert für mich ganz gut:

[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);
    }
}
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top