代码之家  ›  专栏  ›  技术社区  ›  Glory Raj

添加范围不适用于列表[重复]

  •  -2
  • Glory Raj  · 技术社区  · 7 年前

    public class PayeeContactDetails
    {
    
        //[JsonProperty("id")]
        //[DefaultValue("")]
        //public int ID { get; set; }
    
        [JsonProperty("contact_name")]
        [DefaultValue("")]
        public string ContactName { get; set; }
    
        [JsonProperty("contact_email")]
        [DefaultValue("")]
        public string ContactEmail { get; set; }
        ........
        ........
    }
    

     public class PayeeContactGroup
     {   
        [JsonProperty("payee_contacts")]    
        public List<PayeeContactDetails> PayeeContact { get; set; }
    
     }
    

    在这里,我从api响应中获取数据,在完成所有页面后,我需要一次将所有数据发送到DB

     PayeeContactGroup payeeContactDetails = new PayeeContactGroup();
    
      var response = httpClient.GetAsync(uri).Result;
      if (response.IsSuccessStatusCode)
      {
         string data = response.Content.ReadAsStringAsync().Result;
         var payeeContactGroupDetails = JsonConvert.DeserializeObject<PayeeContactGroup>(data);
    
         if(payeeContactGroupDetails.PayeeContact != null && payeeContactGroupDetails.currentPage == 1)
          {
             payeeContactDetails.PayeeContact = payeeContactGroupDetails.PayeeContact.ToList();
          }
          else if(payeeContactGroupDetails.PayeeContact != null && payeeContactGroupDetails.currentPage > 1)
          { 
             payeeContactDetails.PayeeContact.AddRange(payeeContactGroupDetails.PayeeContact); // error at this line 
          }
          .......
          ......
      }         
    

    但我在 这条线

    “payeeContactDetails.PayeeContact.AddRange(payeeContactGroupDetails.PayeeContact);” 错误:“对象引用未设置为对象”

    非常感谢

    2 回复  |  直到 7 年前
        1
  •  4
  •   Romano Zumbé    7 年前

    您需要创建 List

    public class PayeeContactGroup
     {   
        [JsonProperty("payee_contacts")]    
        public List<PayeeContactDetails> PayeeContact { get; set; } = new List<PayeeContactDetails>();
    
     }
    

    列表 只有在必要时:

    PayeeContactGroup payeeContactDetails = new PayeeContactGroup();
    
    var response = httpClient.GetAsync(uri).Result;
    if (response.IsSuccessStatusCode)
    {
       string data = response.Content.ReadAsStringAsync().Result;
       var payeeContactGroupDetails = JsonConvert.DeserializeObject<PayeeContactGroup>(data);
    
       if(payeeContactGroupDetails.PayeeContact != null && payeeContactGroupDetails.currentPage == 1)
        {
           payeeContactDetails.PayeeContact = payeeContactGroupDetails.PayeeContact.ToList();
        }
        else if(payeeContactGroupDetails.PayeeContact != null && payeeContactGroupDetails.currentPage > 1)
        { 
             if(payeeContactDetails.PayeeContact == null)
             {
                  payeeContactDetails.PayeeContact = new List<PayeeContactDetails>();
             }
             payeeContactDetails.PayeeContact.AddRange(payeeContactGroupDetails.PayeeContact); // error at this line 
        }
          .......
          ......
    } 
    
        2
  •  1
  •   DavidG    7 年前

    AddRange 方法正在尝试添加到null。这可以通过代码实现:

    PayeeContactGroup payeeContactDetails = new PayeeContactGroup();
    
    payeeContactDetails.PayeeContact = new List<PayeeContactDetails>();