我在一个对象旁边有一个嵌套集合:
public class Question
{
public AnswerObjectCollection Answers
{
get;
private set;
}
}
当我尝试在AnswerObjectCollection
对象中添加Question
的答案时,我得到以下异常:
对象引用未设置为对象的实例
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
变量为空
Mapper.CreateMap(typeof(AnswerObjectCollection), typeof(AnswerObjectCollection));
Mapper.CreateMap(typeof(Answer), typeof(Answer));
Mapper.Map(answer, currQuestion.Answers);
答案 0 :(得分:0)
您需要在Question
类
public class Question {
public Question() {
Answers = new AnswerObjectCollection();
}
public AnswerObjectCollection Answers {
get;
private set;
}
}
这将实例化您的Answers
属性。
答案 1 :(得分:0)
这很简单:
通过调用
创建"dd.MM.yyyy HH:mm:ss.SSS'000'"
后
public static void main(String[] args) throws ParseException {
printDate("dd.MM.yyyy HH:mm:ss.SSS");//02.05.2010 21:45:58.073
printDate("dd.MM.yyyy HH:mm:ss.SSSSSS");//02.05.2010 21:45:58.000073
printDate("dd.MM.yyyy HH:mm:ss.SSS'000'");//02.05.2010 21:45:58.073000
printDate("dd.MM.yyyy HH:mm:ss.'000000'");//02.05.2010 21:45:58.000000
tryToParseDate("dd.MM.yyyy HH:mm:ss.SSS");//good
tryToParseDate("dd.MM.yyyy HH:mm:ss.SSSSSS");//good
tryToParseDate("dd.MM.yyyy HH:mm:ss.SSS'000'");//bad
tryToParseDate("dd.MM.yyyy HH:mm:ss.'000000'");//good
}
private static void printDate(String formatString) {
Date now = new Date();
SimpleDateFormat format = new SimpleDateFormat(formatString);
String formattedDate = format.format(now);
// print that date
System.out.println(formattedDate);
}
private static void tryToParseDate(String formatString) {
Date now = new Date();
SimpleDateFormat format = new SimpleDateFormat(formatString);
String formattedDate = format.format(now);
// try to parse it again
try {
format.parse(formattedDate);
System.out.println("good");
} catch (ParseException e) {
System.out.println("bad");
}
}
您必须创建Question
Question currQuestion = new Question();
它会起作用。
或者将其添加到您的代码中:
AnswerObjectCollection
答案 2 :(得分:0)
未初始化属性Answers
。在构建类Question
,
public Question()
{
Answers = new AnswerObjectCollection();
}
默认情况下,所有属性和字段都将初始化为默认值(default(T)
)。对于参考属性(和字段),默认值为null
,因此您遇到了NullReferenceException
的原因。
类似的问题,
AnswerObjectCollection answer = new AnswerObjectCollection();
answer.AddRange(GetAnswersByQuestion(currQuestion.QuestionIdentity));
这里只是创建一个单独的变量,与类Answers
的属性Question
无关。因此,当你这样做时,
currQuestion.Answers.AddRange(answer);
你遇到了和以前一样的问题。
两者都可以通过在构造函数中初始化属性来修复。