C# - Как хранить несколько сведений (сопоставленных)
У меня огромная проблема, и я не знаю, каким методом я должен ее решить...
Текущее состояние Программы: Пользователь в настоящее время может создавать новые Элементы ToolMenuStrips во время выполнения. MenuStrip ВСЕГДА имеет 3 слоя. например: родитель - ребенок 1 - ребенок ребенка1. Может быть несколько родителей, несколько детей и несколько детей, только правило, что они не могут иметь одно и то же имя. Если я нажимаю на 3. слой, он открывает событие, которое дает мне имя 3. слоя, на котором я щелкнул. (Примечание. Идентификаторы и имена элементов выглядят следующим образом: Parent= ParentName; Child= ParentName+ChildName; Child of Child = ParentName+ChildName+Child of ChildName). Все это прекрасно работает!
"Проблема": теперь создается 3-й слой (дочерний элемент) вместе с некоторыми данными (включая путь и имя файла), которые хранятся в массиве. Этот массив нужно привязать к 3-му слою.
Моя цель: при добавлении нового 3-го слоя имя файла и его путь должны быть добавлены в список наблюдателя, который ожидает создания новых файлов с именем FIlename в папке. (Таким образом, у меня есть несколько путей, которые я наблюдаю одновременно). Кроме того, когда пользователь нажимает на 3-м слое, он открывает экземпляр формы, чтобы создать его, мне нужно передать информацию, связанную с этим 3. слоем. Который затем будет отображаться.
Следующие шаги Программы: мне нужно, чтобы динамически создаваемые MenuStripItems с информацией были сохранены в настройках или XML, чтобы программа могла снова загружать все данные в другое время выполнения (закрытие и перезапуск программы)
Мой вопрос: каков наилучший способ сделать это? Мои идеи:
а) использование кортежей -> (это трудно понять и, вероятно, кодирование мусора)
<string Parent, multidimensional array [childs,child of childs], map <string Filename, string Filepath>>
б.) использование классов моделей -> создание динамических классов *(я понятия не имею, как это сделать, я имею в виду, да 1. dynamic Class = "Parents"), который получает информацию обо всех Childs и Child of Childs и другую информацию в виде параметры при инициализации, но как бороться с удалением некоторых элементов / добавлением некоторых к нему)
в.) Я читал кое-что о "древовидном", где вы можете инициализировать.Node с некоторыми ключевыми значениями, но я не знаю, подходит ли это для этого?
d.)...?
Может быть, это легко решить, но мне не хватает знаний... Я знаю, что это достаточно открытый вопрос, но у меня нет НИКАКОГО КЛЮЧЕВА, как с этим бороться... У меня была идея сохранить все это всего за 1 Многомерный массив, но это настолько грязно, что я уронил его... Поскольку его трудно различить между Parent и его Childs и его Child of CHilds и так далее... (10-мерный массив подойдет хотя бы xD)
Заранее спасибо!
С наилучшими пожеланиями,
Кристиан
Редактировать: Пример информации: Пример с 1 родителем (может быть несколько из них с именем, отличным от A1 -> A2, например, с тем же именем потомков)
A1 // Родитель
B1 // ребенок HG1
B2 // другой ребенок HG1
C1 // Дитя B1
C2 // еще один ребенок B1
C3 // ребенок B2
Теперь, когда создаются C1,C2,C3, у каждого из них есть список вроде этого:
List ListC1 = {StringnameC1, StringpathC1, PictureC1;}
List ListC2 = {StringnameC2, StringpathC2, PictureC2;}
List ListC3 = {StringnameC3, StringpathC3, PictureC3;}
В настоящее время проблема заключается в том, что я не сохраняю список, полученный из 2-й формы, я просто перезаписываю его, когда создаю новый ToolStripItems (мне нужен способ сохранить все списки и получить к ним доступ чисто) И когда я нажимаю на MenuStripItem C3, он мне нужен чтобы получить доступ к ListC3 с его пунктами. Кроме того, мне нужен простой способ хранить всю эту информацию во время выполнения.