我对依赖注入有点陌生。我正在尝试开始使用 ASP.NET 5,并且正在努力弄清楚如何使用 ASP.NET 5 类库中的服务。尤其是像日志记录和 EF 数据访问这样简单的事情。
例如,我已按照此处的指南进行操作:http://docs.asp.net/en/latest/fundamentals/logging.html http://docs.asp.net/en/latest/fundamentals/logging.html
这使我能够登录主应用程序。然后如何在我的类库中输出日志事件?
我知道从类库中引用主应用程序是一种不好的做法,并且想弄清楚如何正确地执行它。
通过传递一个为你的类创建一个记录器ILogger<YourClass>
在构造函数中与示例中完全相同:
public class MyClass : IMyClass
{
private readonly ILogger<MyClass> _logger;
public (ILogger<MyClass> logger)
{
_logger = logger;
}
public void MyMethod()
{
_logger.LogInformation("a log");
}
}
或者通过一个ILoggerFactory
:
public class MyClass: IMyClass
{
private readonly ILogger _logger;
public (ILoggerFactory loggerFactory)
{
_logger = loggerFactory.CreatLogger("MyClass");
}
public void MyMethod()
{
_logger.LogInformation("a log");
}
}
并通过以下方式解决你的课程依赖注入 http://docs.asp.net/en/latest/fundamentals/dependency-injection.html:
services.AddTransient<IMyClass, MyClass>();
然后你可以在你的控制器中使用它:
[Route("api/[controller]")]
public class TodoController : Controller
{
private readonly IMyClass _myClass;
private readonly ILogger<TodoController> _logger;
public TodoController(IMyClass myClass,
ILogger<TodoController> logger)
{
_myClass = myClass;
_logger = logger;
}
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)