如何将对象集合添加到对象变量集合?

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);

你 运行 遇到了和以前一样的问题。

两者都可以通过在构造函数中初始化 属性 来修复。