我正在通过以下方法使用服务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告诉我,如果初始化器不是静态的,它就不能引用它。
这应该怎么做?是服务中的错误还是页面中的错误?
2条答案
按热度按时间guykilcj1#
这是怎么做到的?
1.在Program.cs中注册ITADService
builder.Services.RegisterScoped<ITADService>();
1.在ITADService的构造函数中注入HttpClient
public ITADService(HttpClient http) { _http = http; }
1.将ITADService注入页面
@inject ITADService iTADService
brvekthn2#
CodeCaster在评论中给出了解决方案:使用ITADService示例:
更改构造函数,使其不接受参数,只需:
然后在调用中引用示例而不是类本身: