【发布时间】:2011-07-08 10:51:03
【问题描述】:
从this question 开始,我希望 autofac 将声明对象的类型注入到我的 NLog 服务的构造函数中,以便它可以正确记录哪种类型正在记录条目。
我的 NLogService 类看起来像这样...
public class NLogService : ILogService
{
private readonly Logger _logger;
public NLogService(Type t)
{
var consumerType = t.DeclaringType.FullName;
_logger = LogManager.GetLogger(consumerType);
}
但是它在应用程序启动时失败,因为它显然无法确定将什么注入到 NLogService 的构造函数中,并出现以下错误...
没有找到任何构造函数 类型上的“公共绑定标志” 'MyProduct.Domain.Services.Logging.NLogService' 可以使用可用的调用 服务和参数:不能 解析参数'System.Type t' 构造函数'Void .ctor(System.Type)'。
所以,我的问题是 - 我如何指示 autofac 注入调用类的类型?
我试过了……
public NLogService(Type t)
{
var method = MethodBase.GetCurrentMethod();
Type consumingType = method.DeclaringType;
var consumerType = consumingType.FullName;
var consumerType = t.DeclaringType.FullName;
_logger = LogManager.GetLogger(consumerType);
}
但我最终得到的是MyProduct.Domain.Services.Logging.NLogService
我想要的是执行实际日志记录的类的类型。
我已经有tried this suggestion,但它对我也不起作用。
【问题讨论】:
-
嗨 - 我已经尝试修复你链接到的另一个答案 - stackoverflow.com/questions/4774286/… - 如果你有机会尝试一下,你正在寻找的类型现在应该会自动注入.干杯!
-
嗨,尼古拉斯,我会试试的。如果它现在确实有效,它肯定会“更干净”。谢谢!
标签: dependency-injection autofac nlog