【发布时间】:2023-01-21 18:32:43
【问题描述】:
MAUI 的依赖注入设置类似于 ASP.NET Core 在 Startup.cs 类中的设置。这个默认设置在MauiProgram.cs文件中。
我的问题是:如何在服务注册后在此文件中获取服务实例?我想,一种解决方案如下,但如果这些服务的构造函数随时间发生变化,我也必须编辑此代码:
var keyValueStore = new PreferencesKeyValueStore();
var accountService = new AccountService(keyValueStore);
var profileService = new ProfileService(keyValueStore);
builder.Services.AddSingleton<IKeyValueStore>(keyValueStore);
builder.Services.AddSingleton<IAccountService>(accountService);
builder.Services.AddSingleton<IProfileService>(profileService);
//Here now I can use accountService and profileService to do something
我找不到更优雅的解决方案,可以从 DI 容器为我返回服务实例。就像是:
builder.Services.AddSingleton<IKeyValueStore, PreferencesKeyValueStore>();
builder.Services.AddSingleton<IAccountService, AccountService>;
builder.Services.AddSingleton<IProfileService, ProfileService>();
//Now I can't perform something like: var accountService = diContainer.GetInstance<IAccountService>(); or similar.
我不知道如何到达 di 容器并要求它为我提供注册实例。
【问题讨论】:
-
你可以查看this case。
标签: c# asp.net-core dependency-injection maui