代码之家  ›  专栏  ›  技术社区  ›  jrwren odony

castle windsor调用默认构造函数,而不是具有依赖关系的构造函数

  •  1
  • jrwren odony  · 技术社区  · 16 年前

    给出以下代码。

        [TestMethod] public void CanResolveILoggerTest()
        {
            var Container = new Castle.Windsor.WindsorContainer();
            Container.Register(
                Component.For<Castle.Core.Logging.ILogger>()
                    .ImplementedBy<Castle.Core.Logging.TraceLogger>(),
                Component.For<NeedsLogger>()
                );
            var blah = Container.Resolve<NeedsLogger>();
        }
        public class NeedsLogger
        {
            public NeedsLogger()
            {
                throw new Exception("container shouldn't resolve me");
            }
            Castle.Core.Logging.ILogger logger;
    
            public NeedsLogger(Castle.Core.Logging.ILogger logger)
            {
                this.logger = logger;
            }
        }
    

    为什么调用默认NeedsLogger构造函数而不是具有依赖关系的构造函数。

    1 回复  |  直到 16 年前
        1
  •  2
  •   Krzysztof Kozmic    16 年前

    最有可能的原因是记录器尚未就绪(它正在等待提供自己的依赖项)。

    我强烈建议您不要这样做,而是使用日志记录工具,它将负责为您注册和提供日志记录程序。/