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