Как правильно сериализовать/десериализовать динамически в listbox'ы
Есть такие классы/вложенности/иерархии/или еще как-то)
public class Faculty
{
public string NameFaculty {get; set; }
public List<LevelOfTraining> LevelsOfTraining { get; set; } = new List<LevelOfTraining>();
}
public class LevelOfTraining
{
public string NameLevel { get; set; }
public List<Group> Groups { get; set; } = new List<Group>();
}
public class Group
{
public string NameGroup { get; set; }
public List<Student> Students { get; set; } = new List<Student>();
}
public class Student
{
public string NameStudent { get; set; }
}
Есть 4 listbox'а, которые должны отображать данные этих классов, а также методы, для динамического работы с данными - добавления, удаления и обновления этих данных, все это делается через прокинутый репозиторий во ViewModel.
Т.е. выбираю элемент из первого listbox заполняется второй listbox и т.д.
Как я понял эти классы не для сериализации и десериализации, нужны другие классы которые будут непосредственно данными, которые сериализуют и десериализуют.
Растолкуйте, пожалуйста как правильно сделать сериализацию и десериализацию, какие классы все таки нужны для этого и как динамически работать с этими данными после операций сериализации и десериализации в части методов(CRUD) для коллекций?)