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 код - на самом деле, я думаю, что последний из них может работать очень хорошо - но если вам нужно усложнить, этот вопрос обсуждает аналогичное решение для хеш-таблицы, с большим количеством подробностей.

Другие вопросы по тегам