. net Core - ILogger DI和基类/对象类



我一定是错过了。net核心DI的东西,我需要你的帮助。我已经成功地为我的服务类,我的Azure客户端类等使用了DI,但我不明白如何让它与我的基类(只代表基本对象的类)一起工作。

假设我有一个非常简单的类,比如

public class Person{
private readonly Ilogger<Person> logger;
public string name {get; set;}
public string lastname {get; set;}
public void LogYourName(){
logger.logInformation(this.name);
}
}

同样,假设我有一个HTTP rest API或另一个服务,返回Person的实例作为结果。

不使用DI如何在Person类中启动ILogger?

微软依赖注入框架要求你通过构造函数来实现。你需要这样做:

public class Person
{
private readonly ILogger logger;
public Person(ILogger logger) => this.logger = logger;
// Additional Code Here
}

当对象被构造时,框架将为你注入logger实例。然而,根据你上面的问题-为了避免依赖注入需要做:

var logger = services.GetService<ILogger>();
var person = new Person(logger);

services来源于IServiceProvider。我需要了解如何实例化IServiceCollection并填充IServiceProvider。这将允许你在仍然使用微软依赖注入框架的情况下,手动将接口放入类中。

最新更新