У меня есть список имен файлов, которые нужно сохранить в файле конфигурации моих приложений.
Единственная коллекция, которая появляется в начальном поле со списком на странице настроек, это System.Collections.Specialized.StringCollection
. Первоначально я не запрашивал это, поскольку преобразовал это в List<string>
сразу. Был один фрагмент кода, который меня не порадовал: копирование этого списка в ListBox
в диалоге конфигурации и обратно:
public List<string> ImageNames
{
get
{
return folderImages.Items.ToList();
}
set
{
folderImages.Items.AddRange(value.ToArray());
}
}
Однако я пересматривал свой код и думал, что, если я сохраню список как StringCollection
, я смогу улучшить этот код. Везде, где я использовал список / коллекцию, все было в порядке, но это преобразование мне не нравится:
public StringCollection ImageNames
{
get
{
var names = new StringCollection();
names.AddRange(folderImages.Items.ToList().ToArray());
return names;
}
set
{
value.ToList().ForEach(imageName => folderImages.Items.Add(imageName));
}
}
На самом деле, теперь я вижу код бок о бок (как бы), я думаю, что версия List<string>
«чище» - она, безусловно, яснее.
Так есть ли другая коллекция или тип списка, который я могу сохранить в файле настроек? Я бы очень хотел избежать преобразования при чтении и записи файла настроек, если это вообще возможно.
В противном случае - есть ли более чистый способ преобразования между StringCollection
и ListBox.ObjectCollection
(ListBox.Items
)?