.Net Core 服务使用其他服务的价值

.Net Core service using value from another service

我目前正在尝试寻找一种更好的方法来调用另一个 class 服务的构造函数中的服务函数。我对自己正在做的事情有一种不好的预感,认为我在与 ASP .Net Core 的基础作斗争。我的问题是,我是否在与 .Net 方式作斗争?有没有更好的方法让我不创建 CryptionService 的新实例?

//this singleton has a function called GetSQLitePassword that returns a string
services.AddSingleton<ICryptionService, CryptionService>();

// Use value returned from cryptionService
services.AddScoped<ISQLiteSettingsRepo, 
    SQLiteSettingsRepo>(x => new SQLiteSettingsRepo(
        "./Settings.db", 
        new CryptionService().GetSQLitePassword()
    ));

我想我可以做这样的事情:

services.AddScoped<ISQLiteSettingsRepo, SQLiteSettingsRepo>(x => new SQLiteSettingsRepo(
    "./Settings.db", 
    service.GetService<ICryptionService>().GetSQLitePassword()
 ));

为什么需要这个部分:x => new SQLiteSettingsRepo(...? 您应该在 SQLiteSettingsRepo

的构造函数中注入 ICryptionService 服务