簡體   English   中英

為什么當返回值不是 null 時,此服務返回 null?

[英]Why does this service return null when return value is not null?

不知道為什么會這樣。

在 SaveRole() 方法中,當我嘗試 hover 並查看調試時的值時,此行始終在 apiResponse 變量上顯示 null。

var apiResponse = await RoleUiService.CreateAsync(createRoleRequest); 

即使它實際上設置了 _messages 的值,但在設置此值之后。 調試器仍將 apiResponse 顯示為 null。

if (apiResponse.StatusCode != HttpStatusCode.BadRequest)
{
  NavigationManager.NavigateTo("/RoleManagement/Roles",false);
}
else
{
  _messages = apiResponse.ResponseMessages;
}
public class HttpService
{
  public async Task<ApiResponse<T>> HttpPostAsync<T>(string uri, object dataToSend) where T : class
  {
     var content = ToJson(dataToSend);
     var apiURL = $"{_apiBaseUrl}{uri}";

     var result = await _httpClient.PostAsync(apiURL, content);

     return await FromHttpResponseMessageAsync<T>(result);
  }
}

public class RoleUiService
{
  private readonly IHttpService _httpService;

  public RoleUiService(IHttpService httpService)
  {
     _httpService = httpService;
  }

  private async Task SaveRole()
  {
    //Debugger always shows apiResponse as null even when _messages 
    gets a value from apiResponse.ResponseMessages
   var apiResponse = await 
   
   RoleUiService.CreateAsync(createRoleRequest); 
                              
   if (apiResponse.StatusCode != HttpStatusCode.BadRequest)
   {
      NavigationManager.NavigateTo("/RoleManagement/Roles",false);
   }
   else
   {
       _messages = apiResponse.ResponseMessages;
   }
}

//Blazor wasm component code 
public partial class CreateOrEditRole
{
  [Inject]
  public IRoleUiService RoleUiService { get; set; }

  public async Task<ApiResponse<CreateRoleResponse>> 
      CreateAsync(CreateRoleRequest createRoleRequest)
  {
    var result = await _httpService.HttpPostAsync<CreateRoleResponse> 
    (CreateRoleRequest.Route,                                                                      
    createRoleRequest);
    return result;
  }
}

//Services registered in PROGRAM.cs 

builder.Services.AddScoped<IHttpService, HttpService>();
builder.Services.AddScoped<IRoleUiService, RoleUiService>();

感謝您的回復,請查看屏幕截圖。 即使從 apiResponse 中提取了一個值並將其分配給一個變量,object 仍然報告為 null。

apiResponse object 是 null

apiResponse 顯示 null 即使值 a 被設置為 var

這是一個可能的原因。

在 Visual Studio 中調試

上面調試文章的屏幕截圖

看圖,正好在那個時候,name還沒有被改變,每前進一步就會發生改變,name變量賦值的那一行不再高亮。

在這篇文章中,只是在這張圖片下面說:

Hover 查看 name 變量的當前值,這是一個空字符串。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM