目前我有一个看起来像这样的课程:
public class MyClass : IMyClass
{
public MyClass()
{
//...
}
public MyClass(IMyRepository repository)
{
//...
}
}
在我的配置文件中,我注册了IMyClass,但没有注册IMyRepository。我的目的是让Windsor使用不带任何参数的构造函数,但我收到了这条消息:
无法创建组件'MyClass' 有依赖性得到满足。 MyClass正在等待以下内容 依赖关系:
服务: - 未注册的Namespace.IMyRepository。
我发现another post表示容器将使用它可以满足的最多参数调用构造函数。那么为什么它试图用一个不知道如何满足的参数调用构造函数呢?
答案 0 :(得分:1)
也许你正在使用旧版的温莎......这对我来说很合适:
[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);
}
}