.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
服务
我目前正在尝试寻找一种更好的方法来调用另一个 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
服务