Web Services Razor Page无法调用服务方法CS0120

4jb9z9bj  于 2023-04-21  发布在  其他
关注(0)|答案(2)|浏览(164)

我正在通过以下方法使用服务ITADService:

public async Task GetAllGames()
{
var result = InterpretStringResponse((await _http.GetAsync("api/itad")).ToString());
}

我的razor页面使用以下命令调用此方法:

protected override async Task OnInitializedAsync()
{
    await ITADService.GetAllGames();    
}

这会导致CS0120构建时错误,指出对象引用是必要的,但当我在页面上创建服务的示例时:

private readonly HttpClient _http;
ITADService service = new ITADService(_http);

Visual Studio告诉我,如果初始化器不是静态的,它就不能引用它。
这应该怎么做?是服务中的错误还是页面中的错误?

guykilcj

guykilcj1#

这是怎么做到的?
1.在Program.cs中注册ITADService
builder.Services.RegisterScoped<ITADService>();
1.在ITADService的构造函数中注入HttpClient
public ITADService(HttpClient http) { _http = http; }
1.将ITADService注入页面
@inject ITADService iTADService

brvekthn

brvekthn2#

CodeCaster在评论中给出了解决方案:使用ITADService示例:

ITADService service = new ITADService();

更改构造函数,使其不接受参数,只需:

public ITADService()
{
    _http = new HttpClient();
}

然后在调用中引用示例而不是类本身:

await service.GetAllGames();

相关问题