我正在使用拉马尔 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 ?这可能吗?