Wie zum Schloss Windsor bekommen parameterlosen Konstruktor anrufen?
-
03-07-2019 - |
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?
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);
}
}