0

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

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

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

无法创建组件“MyClass”,因为它具有要满足的依赖项。MyClass 正在等待以下依赖项:

服务: - Namespace.IMyRepository 未注册。

我发现另一篇文章说容器将使用它可以满足的最多参数调用构造函数。那么为什么它试图用一个它不知道如何满足的参数来调用构造函数呢?

4

1 回答 1

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);
    }
}
于 2009-05-04T22:32:53.300 回答