首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在.Net MAUI中使用依赖注入接口

在.Net MAUI中使用依赖注入接口
EN

Stack Overflow用户
提问于 2022-06-23 09:48:41
回答 1查看 725关注 0票数 0

我正试图在我的新项目.Net MAUI中第一次实现依赖注入。出于测试目的,我希望从ViewModel中的本地源获取数据。生产场景将使用HttpClient从远程数据源获取数据。

下面是我的代码基结构:

我有一个接口:

代码语言:javascript
运行
复制
 public interface IApiService
{
    Task<bool> GetSomething(string parameter);
    Task<string> GetSomethingElse(string parameter);
}

我有两个从它派生出来的类.

代码语言:javascript
运行
复制
public class LocalDataStore: IApiService
public class RemoteDataStore: IApiService

在我的MauiProgram.cs中,当我想要使用本地数据存储:

代码语言:javascript
运行
复制
builder.Services.AddSingleton<LocalDataStore>()

builder.Services.AddSingleton<IApiService>()

与远程数据存储

代码语言:javascript
运行
复制
builder.Services.AddSingleton<RemoteDataStore>()

builder.Services.AddSingleton<IApiService>()

在我的ViewModel:

代码语言:javascript
运行
复制
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类中更改它?

EN

Stack Overflow用户

发布于 2022-06-23 10:08:40

那是微不足道的事。

我需要这样注册服务:

builder.Services.AddSingleton<IApiService,LocalDataStore>();

多亏了https://youtu.be/paZNvvUNFi0,我才意识到这一点。

希望这能帮上忙。

票数 2
EN
查看全部 1 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72728094

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档