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
Run Code Online (Sandbox Code Playgroud)
我找不到更优雅的解决方案来从 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.
Run Code Online (Sandbox Code Playgroud)
我不知道如何访问 di 容器并要求它向我提供注册实例。