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"/>
所以,生活方式=“短暂”,谢谢。 – Langdon 2011-03-25 09:40:53
yeap。这可能是你以后的事情。 – 2011-03-25 10:13:48