2011-03-24 49 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