2009-05-04 59 views
0

目前,我有一個類,它看起來像這樣:如何讓Castle Windsor調用無參數構造函數?

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

在我的配置文件我有IMyClass註冊,但不IMyRepository。我的目的是讓溫莎使用不帶任何參數的構造,但我得到這個消息:

無法創建組件「MyClass的」,因爲它 具有依賴性是在線北京。 MyClass正在等待以下 依賴關係:

服務: - 尚未註冊的Namespace.IMyRepository。

我發現another post表示容器將調用具有最多參數的構造函數來滿足它。那麼爲什麼它試圖用一個不知道如何滿足的參數來調用構造函數呢?

回答

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); 
    } 
} 
+0

我下載了最新版本,它是工作,謝謝! – MrDustpan 2009-05-05 03:40:14

相關問題