如何将对象集合添加到对象变量集合?
How do I to add object collection to an object variable collection?
我在一个对象中有一个嵌套集合:
public class Question
{
public AnswerObjectCollection Answers
{
get;
private set;
}
}
当我尝试在 Question
对象中添加对 AnswerObjectCollection
的答案时,出现以下异常:
Object reference not set to an instance of an object
Question currQuestion = new Question();
currQuestion.Answers.AddRange(GetAnswersByQuestion(currQuestion.QuestionIdentity));
如果我先尝试创建答案对象(确实有效),我也无法添加它
AnswerObjectCollection answer = new AnswerObjectCollection();
answer.AddRange(GetAnswersByQuestion(currQuestion.QuestionIdentity));
currQuestion.Answers.AddRange(answer);
如果我尝试映射对象,我不会收到错误,但 currQuestion.Answers
变量为 null
Mapper.CreateMap(typeof(AnswerObjectCollection), typeof(AnswerObjectCollection));
Mapper.CreateMap(typeof(Answer), typeof(Answer));
Mapper.Map(answer, currQuestion.Answers);
您需要向 Question
class
添加构造函数
public class Question {
public Question() {
Answers = new AnswerObjectCollection();
}
public AnswerObjectCollection Answers {
get;
private set;
}
}
这将实例化您的 Answers
属性。
就这么简单:
通过调用
创建 Question
之后
Question currQuestion = new Question();
您必须创建 AnswerObjectCollection
的实例
currQuestion.Answers = new AnswerObjectCollection();
它会起作用。
或将此添加到您的代码中:
public Question()
{
Answers = new AnswerObjectCollection();
}
属性 Answers
没有被初始化。在构造 class Question
,
时需要这样做
public Question()
{
Answers = new AnswerObjectCollection();
}
默认情况下,所有属性和字段都将初始化为默认值 (default(T)
)。对于引用属性(和字段),默认值为 null
,因此您 运行 变成 NullReferenceException
.
类似的问题,
AnswerObjectCollection answer = new AnswerObjectCollection();
answer.AddRange(GetAnswersByQuestion(currQuestion.QuestionIdentity));
这里你只是创建了一个单独的变量,与classQuestion
的属性Answers
无关。因此,当您这样做时,
currQuestion.Answers.AddRange(answer);
你 运行 遇到了和以前一样的问题。
两者都可以通过在构造函数中初始化 属性 来修复。
我在一个对象中有一个嵌套集合:
public class Question
{
public AnswerObjectCollection Answers
{
get;
private set;
}
}
当我尝试在 Question
对象中添加对 AnswerObjectCollection
的答案时,出现以下异常:
Object reference not set to an instance of an object
Question currQuestion = new Question();
currQuestion.Answers.AddRange(GetAnswersByQuestion(currQuestion.QuestionIdentity));
如果我先尝试创建答案对象(确实有效),我也无法添加它
AnswerObjectCollection answer = new AnswerObjectCollection();
answer.AddRange(GetAnswersByQuestion(currQuestion.QuestionIdentity));
currQuestion.Answers.AddRange(answer);
如果我尝试映射对象,我不会收到错误,但 currQuestion.Answers
变量为 null
Mapper.CreateMap(typeof(AnswerObjectCollection), typeof(AnswerObjectCollection));
Mapper.CreateMap(typeof(Answer), typeof(Answer));
Mapper.Map(answer, currQuestion.Answers);
您需要向 Question
class
public class Question {
public Question() {
Answers = new AnswerObjectCollection();
}
public AnswerObjectCollection Answers {
get;
private set;
}
}
这将实例化您的 Answers
属性。
就这么简单:
通过调用
创建Question
之后
Question currQuestion = new Question();
您必须创建 AnswerObjectCollection
currQuestion.Answers = new AnswerObjectCollection();
它会起作用。
或将此添加到您的代码中:
public Question()
{
Answers = new AnswerObjectCollection();
}
属性 Answers
没有被初始化。在构造 class Question
,
public Question()
{
Answers = new AnswerObjectCollection();
}
默认情况下,所有属性和字段都将初始化为默认值 (default(T)
)。对于引用属性(和字段),默认值为 null
,因此您 运行 变成 NullReferenceException
.
类似的问题,
AnswerObjectCollection answer = new AnswerObjectCollection();
answer.AddRange(GetAnswersByQuestion(currQuestion.QuestionIdentity));
这里你只是创建了一个单独的变量,与classQuestion
的属性Answers
无关。因此,当您这样做时,
currQuestion.Answers.AddRange(answer);
你 运行 遇到了和以前一样的问题。
两者都可以通过在构造函数中初始化 属性 来修复。