0

我正在使用拉马尔 6。

我有一堆域服务,它们都将 aILogger<T>作为构造函数参数。我想通过将记录器移动到具有属性集实例的基类来整理代码ILogger,但我希望注入的实例成为运行时服务类型的ILogger<T>位置T,以便我的日志条目知道生产类型.

我有什么

public class FooService
{
    ILogger<FooService> _logger;

    public FooService(ILogger<FooService> logger)
    {
        this._logger = logger;
    }

    publiic void Frob()
    {
        _logger.LogInfo("Whatever");
    }
}

我想要的是

public abstract class DomainService
{
    [SetterProperty]
    public ILogger Logger {get;set;}
}

public class FooService : DomainService
{
    publiic void Frob()
    {
        Logger.LogInfo("Whatever");
    }
}

我试图指定一个工厂,ILogger但我找不到任何获取请求类型的方法(在这种情况下,FooService

For<ILogger>().Use(ctx =>
{
    var fac = ctx.GetInstance<LoggerFactory>();
    var logger = fac.CreateLogger(requestingType.Name); // how can I get the requesting type name?
    return logger;
});

如何ILogger为当前请求的类型构建一个正确的 categoryName ?这可能吗?

4

0 回答 0