如何让Castle Windsor调用无参数构造函数?

时间:2009-05-04 20:36:18

标签: inversion-of-control castle-windsor

目前我有一个看起来像这样的课程:

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

在我的配置文件中,我注册了IMyClass,但没有注册IMyRepository。我的目的是让Windsor使用不带​​任何参数的构造函数,但我收到了这条消息:

  

无法创建组件'MyClass'   有依赖性得到满足。   MyClass正在等待以下内容   依赖关系:

     

服务:    - 未注册的Namespace.IMyRepository。

我发现another post表示容器将使用它可以满足的最多参数调用构造函数。那么为什么它试图用一个不知道如何满足的参数调用构造函数呢?

1 个答案:

答案 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);
    }
}