Как вариант можешь использовать 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("Объект сериализован");
}
}
}
}
Если в приложение "Тест" будут работать большое кол-во пользователей с разных ПК используй базу данных.