2011-03-24 51 views
0

WindsorContainer :: Resolve方法似乎沒有對我使用的參數給予足夠的關注。那,或者它正在做一些緩存而不是第二次解決。Castle Windsor的解決緩存問題

我有​​,這並不重要,看,和一個實現它:

public class log4netLogger : ILogger 
{ 
    private log4net.ILog _logger; 

    public log4netLogger(string name) 
    { 
     _logger = log4net.LogManager.GetLogger(name); 
    } 

    public log4netLogger(Type type) 
    { 
     _logger = log4net.LogManager.GetLogger(type); 
    } 

    // ... 
} 

而且我有下面的代碼,從配置解析ILogger:

WindsorContainer c = new WindsorContainer(new XmlInterpreter()); 
var a = c.Resolve<ILogger>(new { name = "asdf" }); 
var b = c.Resolve<ILogger>(new { type = typeof(int) }); 

a被分配,使用第一個構造函數...當分配b時,不使用構造函數,並且a == b爲真。如果我反轉訂單並首先分配b,則將使用第二個構造函數,並且ILogger的實例仍然是相同的。

我是否需要額外做些額外的事情才能更密切地關注參數(也許在配置中),還是我完全做錯了?

配置是這樣的:

<component id="Logger" 
      type="namespace.log4netLogger, assembly" 
      service="namespace.ILogger, assembly"/> 

回答

1
+0

所以,生活方式=「短暫」,謝謝。 – Langdon 2011-03-25 09:40:53

+0

yeap。這可能是你以後的事情。 – 2011-03-25 10:13:48