Ответы пользователя по тегу .NET
  • Как лучше передавать данные между тестом и конструктором тестов?

    @SlNik
    Как вариант можешь использовать XML сериализацию:
    На "Конструкторе тестов":
    1 - Создаешь класс(ы) в котором(ых) описываешь все поля что хочешь сохранять. Сам класс и поля должны быть public.
    2 - Класс помечаешь атрибутом [Serializable]
    3 - Создаешь экземпляр класса, заполняешь его
    4 - Делаешь сериализацию

    На приложении "Тест"
    1 - Копируешь созданный класс(ы) для "Конструкторе тестов" в этот проект
    2 - Создаешь экземпляр этого класса и делаешь дисериализацию данных.

    Пример:
    using System;
    using System.Collections.Generic;
    using System.IO;
    using System.Xml.Serialization;
    
    namespace Лямбда_Выражения
    {
        class Program
        {
            static void Main(string[] args)
            {
                Data data = new Data();
                Test test = new Test();
                Question question = new Question();
                Answer answer = new Answer();
                Answer answer2 = new Answer();
    
                question.ТекстВопроса = "Сколько будет 2+2 ?";
                answer.ТекстОтвета = "5";
                answer.ОтветВерный = false;
                answer2.ТекстОтвета = "4";
                answer2.ОтветВерный = true;
                question.Ответы.Add(answer);
                question.Ответы.Add(answer2);
    
                test.Вопросы.Add(question);
                test.ДатаВремяСоздания = DateTime.Now;
                test.Название = "Тест на знание математики";
                test.Создатель = "SlNik";
    
                data.Тесты.Add(test);
                data.Сохранить();
                Console.ReadKey();
            }
        }
    
        [Serializable]
        public class Answer
        {
           public string ТекстОтвета { get; set; }
           public bool ОтветВерный { get; set; }
        }
    
        [Serializable]
        public class Question
        {
            public Question()
            {
                Ответы = new List<Answer>();
            }
            public string ТекстВопроса { get; set; }
            public List<Answer> Ответы { get; set; }
        }
    
        [Serializable]
        public class Test
        {
            public Test()
            {
                Вопросы = new List<Question>();
            }
            public string Название { get; set; }
            public string Создатель { get; set; }
            public DateTime ДатаВремяСоздания { get; set; }
            public List<Question> Вопросы { get; set; }
        }
    
        [Serializable]
        public class Data
        {
            public List<Test> Тесты;
            public string Patch = Path.Combine(Environment.CurrentDirectory, "Data.xml");
            public Data()
            {
                Тесты = new List<Test>();
            }
            public Data(string patch = null)
            {
                Patch = patch;
                if (Patch == null)
                    Patch = Path.Combine(Environment.CurrentDirectory, "Data.xml");
    
                if (File.Exists(Patch))
                    Загрузить(Patch);
            }
            public void Загрузить(string patch)
            {
                XmlSerializer formatter = new XmlSerializer(typeof(Data));
                using (FileStream fs = new FileStream(patch, FileMode.OpenOrCreate))
                {
                    Data data = (Data)formatter.Deserialize(fs);
    
                    Console.WriteLine("Данные с тестами загружены");
                    Console.WriteLine("Кол-во тестов:{0}", data.Тесты.Count);
                }
            }
            public void Сохранить(string patch = null)
            {
                if (patch == null)
                    patch = Patch;
                XmlSerializer formatter = new XmlSerializer(typeof(Data));
                using (FileStream fs = new FileStream(patch, FileMode.Create))
                {
                    formatter.Serialize(fs, this);
                    Console.WriteLine("Объект сериализован");
                }
            }
    
    
        }
    }


    Если в приложение "Тест" будут работать большое кол-во пользователей с разных ПК используй базу данных.
    Ответ написан
    1 комментарий