我对依赖注入有点陌生。我正在尝试开始使用 ASP.NET 5,并且正在努力弄清楚如何使用 ASP.NET 5 类库中的服务。尤其是像日志记录和 EF 数据访问这样简单的事情。
例如,我已遵循此处的指南: http: //docs.asp.net/en/latest/fundamentals/logging.html
这使我能够登录主应用程序。然后如何在我的类库中输出日志事件?
我知道从类库中引用主应用程序是一种不好的做法,并且想弄清楚如何正确地执行它。
通过在构造函数中传递 an 来为您的类创建一个记录器,ILogger<YourClass>就像示例中一样:
public class MyClass : IMyClass
{
private readonly ILogger<MyClass> _logger;
public (ILogger<MyClass> logger)
{
_logger = logger;
}
public void MyMethod()
{
_logger.LogInformation("a log");
}
}
Run Code Online (Sandbox Code Playgroud)
或者传递一个ILoggerFactory:
public class MyClass: IMyClass
{
private readonly ILogger _logger;
public (ILoggerFactory loggerFactory)
{
_logger = loggerFactory.CreatLogger("MyClass");
}
public void MyMethod()
{
_logger.LogInformation("a log");
}
}
Run Code Online (Sandbox Code Playgroud)
并通过依赖注入解析你的类:
services.AddTransient<IMyClass, MyClass>();
Run Code Online (Sandbox Code Playgroud)
然后你可以在你的控制器中使用它:
[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;
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4491 次 |
| 最近记录: |