Ich habe eine Liste von Dateinamen, die ich in der Konfigurationsdatei meiner Anwendung speichern muss.
Die einzige Sammlung, die im ersten Kombinationsfeld auf der Einstellungsseite angezeigt wird, ist System.Collections.Specialized.StringCollection
. Ursprünglich hatte ich dies nicht in Frage gestellt, da ich es in eine List<string>
sofort. Es gab einen Teil des Codes, mit dem ich nicht zufrieden war, nämlich das Kopieren dieser Liste in und aus der Datei ListBox
im Konfigurationsdialog:
public List<string> ImageNames
{
get
{
return folderImages.Items.ToList();
}
set
{
folderImages.Items.AddRange(value.ToArray());
}
}
Ich habe jedoch meinen Code überarbeitet und dachte, dass, wenn ich die Liste als eine StringCollection
Ich könnte diesen Code verbessern. Überall sonst, wo ich die Liste/Sammlung verwendet habe, war es OK, aber diese Konvertierung ist immer noch nicht nach meinem Geschmack:
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));
}
}
Jetzt, wo ich den Code Seite an Seite sehe, denke ich, dass die List<string>
Version "sauberer" ist - sie ist auf jeden Fall klarer.
Gibt es also eine andere Art von Sammlung oder Liste, die ich in der Einstellungsdatei speichern kann? Ich würde wirklich gerne die Konvertierung beim Lesen und Schreiben der Einstellungsdatei vermeiden, wenn möglich.
Andernfalls - gibt es einen saubereren Weg der Konvertierung zwischen einer StringCollection
und ein ListBox.ObjectCollection
(die ListBox.Items
)?