我正试图在我的新项目.Net MAUI中第一次实现依赖注入。出于测试目的,我希望从ViewModel中的本地源获取数据。生产场景将使用HttpClient从远程数据源获取数据。
下面是我的代码基结构:
我有一个接口:
public interface IApiService
{
Task<bool> GetSomething(string parameter);
Task<string> GetSomethingElse(string parameter);
}
我有两个从它派生出来的类.
public class LocalDataStore: IApiService
public class RemoteDataStore: IApiService
在我的MauiProgram.cs中,当我想要使用本地数据存储:
builder.Services.AddSingleton<LocalDataStore>()
builder.Services.AddSingleton<IApiService>()
与远程数据存储
builder.Services.AddSingleton<RemoteDataStore>()
builder.Services.AddSingleton<IApiService>()
在我的ViewModel:
public class Page1ViewModel
{
public Page1ViewModel(IApiService localDataStore)
{
var items = Task.Run(async () => await localDataStore.GetSomething(true));
}
}
在运行该应用程序时,我收到一个错误:
System.InvalidOperationException:“当试图激活‘ViewModels.Page1ViewModel’时,无法解析”...IApiService“类型的服务。”
我做错了什么或者我还应该做什么?
帮帮忙吧。
谢谢,还有问候。
编辑*
当然,当我向构建器注册服务时,如果我使用LocalDataStore或RemoteDataStore而不是IApiService,它就能工作。但是,如果我必须从一个数据存储更改为另一个数据存储,我将不得不在所有的ViewModel类中更改它?
发布于 2022-06-23 10:08:40
那是微不足道的事。
我需要这样注册服务:
builder.Services.AddSingleton<IApiService,LocalDataStore>();
多亏了https://youtu.be/paZNvvUNFi0,我才意识到这一点。
希望这能帮上忙。
https://stackoverflow.com/questions/72728094
复制相似问题