温莎城堡解决缓存问题

时间:2011-03-24 21:01:32

标签: castle-windsor

WindsorContainer :: Resolve方法似乎没有足够关注我正在使用的参数。那,或者它正在做一些缓存而不是第二次解决。

我有ILogger,这看起来并不重要,只有一个实现:

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的实例仍然是相同的。

我是否需要做一些额外的事情才能密切关注参数(或许在配置中),或者我只是完全做错了?

Config看起来像:

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

1 个答案:

答案 0 :(得分:1)