【问题标题】:Question Between @inject HttpClient vs @using System.Net.Http; on view page@inject HttpClient 与 @using System.Net.Http 之间的问题;在查看页面
【发布时间】:2020-11-11 19:03:07
【问题描述】:

那么@using System.Net.Http 有什么不同;您在哪里创建对象并调用该方法@inject HttpClient Http 之间有什么不同所以我正在尝试学习 Blazor

有人能解释一下这个工作的区别吗

 @using System.Net.Http;
@code {
    private WeatherForecast[] forecasts;
  
        protected override async Task OnInitializedAsync()
        {
            var Http = new HttpClient();
            forecasts = await Http.GetFromJsonAsync<WeatherForecast[]>("sample-data/weather.json");
        }

@page "/fetchdata"
@inject HttpClient Http


    @code {
        private WeatherForecast[] forecasts;
    
        protected override async Task OnInitializedAsync()
        {
            forecasts = await Http.GetFromJsonAsync<WeatherForecast[]>("sample-data/weather.json");
        }

【问题讨论】:

    标签: c# dependency-injection blazor


    【解决方案1】:

    当您使用var Http = new HttpClient(); 时,您会创建一个包含 HttpClient 类型实例的局部变量。

    当您使用 @inject HttpClient Http 时,您告诉 Blazor 创建 HttpClient 服务的实例并将其分配给名为 Http 的属性。

    不推荐上述第一种用法。你应该总是注入你的对象而不是实例化它们。注入对象由依赖注入系统创建,该系统创建您的对象、控制其生命周期以及您可以在有关依赖注入的文档中了解的许多其他好处。

    【讨论】:

    • 谢谢:) :) :)
    猜你喜欢
    • 2020-10-22
    • 2021-02-15
    • 1970-01-01
    • 1970-01-01
    • 2018-07-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-21
    • 2018-12-31
    相关资源
    最近更新 更多