【问题标题】:Object reference not set to an instance of an object error on response对象引用未设置为响应时对象错误的实例
【发布时间】:2016-05-24 17:19:14
【问题描述】:

我在 SoapUI 上收到 Object reference not set to an instance of an object. 错误。我使用记录器检查record 是否拥有正确的StartTimeEndTime 但由于某种原因,当我尝试将包含userIdTimePeriodrecord 对象添加到响应中时,我得到了该错误。此外,result 是具有从DataAccess 层返回的信息的变量。对此的任何帮助将不胜感激。

GetUserResponse response = new GetUserResponse();
UserRecord record = new UserRecord();
record.UserId = userId;
record.timePeriodList = new List<TimePeriod>();
for (int i = 0; i < result.Count; i += 2)
{
    TimePeriod timeData = new TimePeriod();
    timeData.StartTime = result[i].Time;
    timeData.EndTime = result[i + 1].Time;
    record.timePeriodList.Add(timeData);
}
response.UserRecordList.Add(record); // line I get that error

这是我回复的代码:

public class GetUserResponse
{
    private List<UserRecord> userRecordList;

    public List<UserRecord> UserRecordList
    {
        get { return userRecordList; }
        set { userRecordList = value; }
    }
}

public class UserRecord
{
    private string userId;
    private List<TimePeriod> timePeriodList;

    public string UserId
    {
        get { return userId; }
        set { userId = value; }
    }

    public List<RbeActivationPeriod> TimePeriodList
    {
        get { return timePeriodList; }
        set { timePeriodList = value; }
    }
}

public class TimePeriod
{
    private DateTime startTime;
    private DateTime endTime;

    public DateTime StartTime
    {
        get { return startTime; }
        set { startTime = value; }
    }

    public DateTime EndTime
    {
        get { return endTime; }
        set { endTime = value; }
    }
}

【问题讨论】:

  • response 在哪里声明? userRecordList 被实例化了吗?
  • 我在你的代码中看不到它,但我认为你已经实例化了你的变量响应?
  • @erik 我为你编辑了这篇文章。抱歉忘记了帖子上的声明。
  • @DarrenDavies 是的,响应已声明。是否需要启动 userRecordList?我已经编辑了帖子以反映更改。谢谢
  • 问题行是timeData.EndTime = result[i + 1].Time;

标签: c# arrays list class arraylist


【解决方案1】:

您需要声明列表UserRecordList 的新实例,因为当您尝试插入元素时它将是null

GetUserResponse response = new GetUserResponse();
response.UserRecordList = new List<UserRecord>();

或者,您可以在类级别或构造函数中添加它。

public class GetUserResponse
{
    private List<UserRecord> userRecordList = new List<UserRecord>();

    public List<UserRecord> UserRecordList
    {
        get { return userRecordList; }
        set { userRecordList = value; }
    }
}

【讨论】:

  • 现在在 response.add 行上显示 Index was out of range. Must be non-negative and less than the size of the collection.
  • @user4756836 - 最有可能这一行timeData.EndTime = result[i + 1].Time; 但是这是一个不同的问题,所以你应该接受这个作为答案(它似乎已经解决了你的问题)并重新发布一个新的问题与索引范围异常。
猜你喜欢
  • 2011-07-09
  • 2012-08-31
  • 2011-11-21
  • 2012-10-01
  • 1970-01-01
  • 1970-01-01
  • 2022-08-18
相关资源
最近更新 更多