Попытка сохранить строку [] [] в настройках приложения WinForms - PullRequest
0 голосов
/ 06 мая 2019

У меня есть приложение winforms, в котором я пытаюсь сохранить двумерный массив в своих настройках Properties.settings, чтобы извлечь их позже. Я узнал, что могу сделать двумерный массив в настройках с помощью этого кода:

<Setting Name="TagPresets" Type="System.String[][]" Scope="User">
  <Value Profile="(Default)" />
</Setting>

Это здорово, но всякий раз, когда я пытаюсь программно сохранить массив, я получаю эту ошибку:

Cannot implicitly convert type 'string[][*,*]' to 'System.Collections.Specialized.StringCollection'

Этого не должно быть, так как я, очевидно, объявил настройку двумерным массивом. Вот код, где я пытаюсь его установить:

Settings.Default.TagPresets = new string[1][,] { new string[,] { { "", "" } } };

Буду признателен за любую помощь или мысли о другом способе достижения этой цели.

1 Ответ

2 голосов
/ 06 мая 2019

Настройки не могут обрабатывать массивы, списки или тому подобное.Единственный подобный списку тип данных, который они могут обрабатывать, - это вышеупомянутая StringCollection.

При этом лучше всего было бы использовать не настройки вообще, а отдельный файл XML или JSON, который программа читает при запуске и записываетперед выходом.

Хотя преобразование StringCollection в массив, список, очередь или стек работает, я не думаю, что это работает для многомерного массива.

В качестве запоздалой мыслиКонечно, вы можете взять каждый вложенный массив в вашем основном массиве, присоединить его к определенному символу, а затем добавить эту присоединенную строку в коллекцию StringCollection.При следующем запуске переберите значения StringCollection, разделите каждое на символ, который вы использовали для объединения, и добавьте полученные массивы в основной массив, который вы создали ранее.Но я бы честно работал с XML или JSON.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...