/// <summary> /// Преобразует IQuestion в масив ресуров /// </summary> /// <param name="questionbase">Объект вопроса</param> /// <returns>Массив русурсов</returns> public static ListResourse ToResource(IQuestion questionbase) { ResourceItem resourse = null; using (MemoryStream ms = new MemoryStream()) { using (var data = new BinaryWriter(ms, Encoding.UTF8, true)) { data.Write(questionbase.Name); //Поле Name data.Write(questionbase.TranslationIdentifier); //Идентификатор перевода data.Write((ulong)questionbase.TypeQuestion); switch (questionbase.TypeQuestion) { case TypeQuestionEnum.SelectOne: QuestionSelectOne questionSelectOne = (QuestionSelectOne)questionbase; data.Write(questionSelectOne.NumberAnswer); data.Write(questionSelectOne.RightAnswer); break; } } resourse = CreateItem(questionbase.ID, StringNameQuestionData + questionbase.Name, FileTypes.Question, ms); } return(new ListResourse { resourse }); }
/// <summary> /// Преобразование ресурса в объект типа вопрос /// </summary> /// <param name="obj">Преобразуемый ресурс</param> /// <param name="lr">список всех ресурсов</param> public static Tuple <IQuestion, ListResourse> ResourceToQuestion(ResourceItem obj, ListResourse lrp) { obj.Data.Position = 0; IQuestion result = null; // SerializableInventoryItem s = new SerializableInventoryItem(obj.Data); using (var data = new BinaryReader(obj.Data, Encoding.UTF8, true)) { String name = data.ReadString(); String translationIdentifier = data.ReadString(); TypeQuestionEnum typeQuestion = (TypeQuestionEnum)data.ReadUInt64(); if (typeQuestion == TypeQuestionEnum.SelectOne) { QuestionSelectOne qsoresult = new QuestionSelectOne(); qsoresult.Name = name; qsoresult.ID = obj.Identifier; qsoresult.TranslationIdentifier = translationIdentifier; qsoresult.NumberAnswer = data.ReadUInt32(); qsoresult.RightAnswer = data.ReadUInt32(); result = qsoresult; } } if (questionlevelcashe.ContainsKey(result.ID)) { for (int j = 0; j < questionlevelcashe[result.ID].Count; j++) { questionlevelcashe[result.ID][j].QuestionsLevel.Add(result); } } QuestionCashe.Add(result); return(new Tuple <IQuestion, ListResourse>(result, new ListResourse { obj })); }