C# 对象引用未设置为响应时对象错误的实例

C# 对象引用未设置为响应时对象错误的实例,c#,arrays,list,class,arraylist,C#,Arrays,List,Class,Arraylist,我得到的对象引用未设置为对象的实例。SoapUI错误。我使用记录器检查record是否持有正确的StartTime和EndTime,但由于某种原因,我在尝试将包含userId和TimePeriod的record对象添加到响应中时出错。另外,result是包含从DataAccess层返回的信息的变量。在此方面的任何帮助都将不胜感激 GetUserResponse response = new GetUserResponse(); UserRecord record = new UserRecord

我得到的
对象引用未设置为对象的实例。
SoapUI错误。我使用记录器检查
record
是否持有正确的
StartTime
EndTime
,但由于某种原因,我在尝试将包含
userId
TimePeriod
record
对象添加到响应中时出错。另外,
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
GetUserResponse=newgetuserresponse();
UserRecord=新的UserRecord();
record.UserId=UserId;
record.timePeriodList=新列表();
对于(int i=0;i
以下是我回答的代码:

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; }
    }
}
公共类GetUserResponse
{
私有列表用户记录列表;
公共列表用户记录列表
{
获取{return userRecordList;}
设置{userRecordList=value;}
}
}
公共类用户记录
{
私有字符串用户标识;
私有列表时间周期列表;
公共字符串用户ID
{
获取{return userId;}
设置{userId=value;}
}
公共列表时间周期列表
{
获取{return timePeriodList;}
设置{timePeriodList=value;}
}
}
公共类时间段
{
私人日期时间开始时间;
私有日期时间结束时间;
公共日期时间开始时间
{
获取{return startTime;}
设置{startTime=value;}
}
公共日期时间结束时间
{
获取{return endTime;}
设置{endTime=value;}
}
}

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

GetUserResponse response = new GetUserResponse();
response.UserRecordList = new List<UserRecord>();
GetUserResponse=newgetuserresponse();
response.UserRecordList=新列表();
或者,您可以在类级别或构造函数中添加此项

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

    public List<UserRecord> UserRecordList
    {
        get { return userRecordList; }
        set { userRecordList = value; }
    }
}
公共类GetUserResponse
{
私有列表userRecordList=新列表();
公共列表用户记录列表
{
获取{return userRecordList;}
设置{userRecordList=value;}
}
}

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

GetUserResponse response = new GetUserResponse();
response.UserRecordList = new List<UserRecord>();
GetUserResponse=newgetuserresponse();
response.UserRecordList=新列表();
或者,您可以在类级别或构造函数中添加此项

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

    public List<UserRecord> UserRecordList
    {
        get { return userRecordList; }
        set { userRecordList = value; }
    }
}
公共类GetUserResponse
{
私有列表userRecordList=新列表();
公共列表用户记录列表
{
获取{return userRecordList;}
设置{userRecordList=value;}
}
}

响应在哪里声明?
userRecordList
是否实例化了?我在你的代码中看不到它,但我假设你已经实例化了变量响应?@erik我为你编辑了这篇文章。抱歉,忘记了帖子上的声明。@DarrenDavies“是”响应已声明。是否需要启动userRecordList?我编辑了这篇文章以反映变化。感谢问题行是
timeData.EndTime=result[i+1]。时间哪里声明了
响应
userRecordList
是否实例化了?我在你的代码中看不到它,但我假设你已经实例化了变量响应?@erik我为你编辑了这篇文章。抱歉,忘记了帖子上的声明。@DarrenDavies“是”响应已声明。是否需要启动userRecordList?我编辑了这篇文章以反映变化。感谢问题行是
timeData.EndTime=result[i+1]。时间它说
索引超出范围。必须为非负数且小于集合的大小。
在该响应上。添加行now@user4756836-最有可能的是此行
timeData.EndTime=result[i+1]。时间但是,这是一个不同的问题,因此您应该接受这个问题作为答案(它似乎已经解决了您的问题),并重新发布一个新问题,其中包含索引超出范围异常。它表示
索引超出范围。必须为非负数且小于集合的大小。
在该响应上。添加行now@user4756836-最有可能的是此行
timeData.EndTime=result[i+1]。时间
但是,这是一个不同的问题,因此您应该接受这个问题作为答案(它似乎已经解决了您的问题),并重新发布一个新问题,索引超出范围异常。