public QuestionSet.QuestionsRow GetPasssageToQuestion(int questionId) { if (questionToPassageCash.Contains(questionId)) { return(passageCache.Questions[0]); } PassageToQuestionSet pq = new PassageToQuestionSet(); manager.DataProvider.GetPassageToQuestions(questionId, pq); if (pq.PassageToQuestions.Count == 0) { throw new Exception(String.Format("No passage for question {0} is defined", questionId)); } questionToPassageCash.Clear(); foreach (PassageToQuestionSet.PassageToQuestionsRow row in pq.PassageToQuestions) { questionToPassageCash[row.QuestionId] = null; } passageCache.Clear(); manager.DataProvider.GetQuestion(pq.PassageToQuestions[0].PassageQuestionId, passageCache); return(passageCache.Questions[0]); }