我是一个ASP.NET Core 2.1项目的助手,需要在Startup.ConfigureServices中注册和使用单例服务。
以下是我的代码:
上面的代码对于我来说很好用,可以在ConfigureServices中使用"MyService"。但是在应用程序的后面,当我尝试使用MyService时,MyService的构造函数被再次调用。为什么它没有使用已经创建的实例,因为我使用
编辑:我决定编辑以添加我的最终目标,看看是否有不同的方法可以完成它。我的单例服务提供了对一些可能来自2个不同地方的设置的访问。其中一个设置是DB连接字符串。我需要在ConfigureServices中使用该连接字符串,以便在调用
以下是我的代码:
我有以下代码:
Original Answer: "最初的回答"public void ConfigureServices(IServiceCollection services)
{
//....
//....
services.AddSingleton<IMyService,MyService>();
var serviceProvider = services.BuildServiceProvider();
var myService = serviceProvider.GetService<IMyService>();
services.AddDbContext<MyDbContext>(options => options.UseMySql(myService.DBConnectionString));
}
上面的代码对于我来说很好用,可以在ConfigureServices中使用"MyService"。但是在应用程序的后面,当我尝试使用MyService时,MyService的构造函数被再次调用。为什么它没有使用已经创建的实例,因为我使用
AddSingleton
注册了该类?编辑:我决定编辑以添加我的最终目标,看看是否有不同的方法可以完成它。我的单例服务提供了对一些可能来自2个不同地方的设置的访问。其中一个设置是DB连接字符串。我需要在ConfigureServices中使用该连接字符串,以便在调用
services.AddDbContext
时拥有它。我还想在获取配置设置的服务中进行一些日志记录,这意味着我还需要获取ILoggerFactory。