C# Сохранить Multidim ArrayList в Properties.Settings
Можно ли сохранить многомерный ArrayList в Properties.Settings? Я получаю ошибки, когда пытаюсь.
Если нет, есть ли другой способ, которым я могу сохранить какую-то многомерную вещь в Properties.Settings?
1 ответ
Ах, я помню, как боролся с Properties.Settings
... никогда не веселая битва:(. Быстрая и грязная опция - использовать разные символы-разделители для выполнения строки "сериализации" (в кавычках, потому что реальная сериализация была бы намного лучше при обработке краевых случаев и т. д.). этот:
int[][] myArray = GetArrayFromElsewhere();
string stringVersion = string.Join(";", myArray.Select(subArray => string.Join(",", subArray)));
Properties.Settings.StringVersion = stringVersion;
Вы также можете использовать эзотерические символы Юникода вместо ;
а также ,
, чтобы избежать случайного разбиения строки, и вы можете использовать цикл (или, возможно, рекурсию), чтобы обобщить это для любого числа измерений.
Но это, конечно, быстрый и грязный обходной путь. Реальным решением было бы выполнить сериализацию многомерного массива. Вы могли бы быть в состоянии сойти с рук с помощью простого XmlSerializer
или же BinaryFormatter
или даже JavaScriptSerializer
код - на самом деле, я думаю, что последний из них может работать очень хорошо - но если вам нужно усложнить, этот вопрос обсуждает аналогичное решение для хеш-таблицы, с большим количеством подробностей.