【问题标题】:Castle Windsor dependency injection: Use the caller type as a parameterCastle Windsor 依赖注入:使用调用者类型作为参数
【发布时间】:2011-04-21 05:52:43
【问题描述】:

在温莎城堡容器中注册了以下类:

namespace MyNamespace
{
    class Foo : IFoo
    {
        public Foo(ILog log)
        {
             _log = log;
        }
        ...
    }
}

ILog 是一个 log4net 记录器,目前注册是这样的:

Component.For<ILog>().UseFactoryMethod(
    () => LogManager.GetLogger(Assembly.GetCallingAssembly().FullName));

我想创建一个名为 调用类型(在本例中为 "MyNamespace.Foo")而不是调用程序集的记录器。除了使用反射来玩堆栈帧之外,有没有办法做到这一点?

【问题讨论】:

标签: c# reflection log4net castle-windsor ioc-container


【解决方案1】:

温莎城堡伐木设施可以满足您的需求。它已经与 log4net 或 NLog 集成(参见:how to set up logging facility)。

如果您仍然好奇,您可以检查源代码以了解它是如何完成的。查看 log4net Integration sourcelogging facility 源代码,尤其是 LoggerResolver 类(负责解析名称)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-03-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-10
    • 2011-04-24
    • 1970-01-01
    相关资源
    最近更新 更多