Как сохранить экземпляр System.Collections.Specialized.NameValueCollection на жесткий диск и загрузить его обратно в качестве экземпляра? - PullRequest
3 голосов
/ 25 июня 2011

У меня есть следующий экземпляр System.Collections.Specialized.NameValueCollection:

Dim UserSelection As New System.Collections.Specialized.NameValueCollection

UserSelection.Add("D_Color1", "Black")
UserSelection.Add("D_Color2", "Green")
UserSelection.Add("D_Color3", "Purple")

Мне нужно сохранить этот экземпляр на жесткий диск, а затем загрузить его обратно с жесткого диска в качестве экземпляра.Как мне это сделать?

Ответы [ 2 ]

9 голосов
/ 25 июня 2011

С двоичным форматом

Using fs As New FileStream("DataFile.dat", FileMode.Create)
   Dim formatter As New BinaryFormatter
   formatter.Serialize(fs, UserSelection)
End Using

и десериализацией

Using fs As New FileStream("DataFile.dat", FileMode.Open)
    Dim formatter As New BinaryFormatter
    UserSelection = DirectCast(formatter.Deserialize(fs), NameValueCollection)
End Using
2 голосов
/ 25 июня 2011

С помощью магии Serializible вы можете записать коллекцию в сериализованный формат, сохранить ее на диск, отправить по сети и т. Д., А затем десериализовать обратно в новый экземпляр NameValueCollection. Благодаря тому, как написан Serializable, вы можете контролировать, как он сохраняется. Чтобы получить сериализацию в XML, вы должны написать (или Google для) небольшой кусочек кода, который реализует IXmlSerializable для NameValueCollection . Сериализация до двоичного работает из коробки:

 Dim fs as New FileStream("MyNameValueCollection.bin", FileMode.Create)
 Dim bs as New BinaryFormatter()
 bs.Serialize(fs, UserSelection)
 fs.Close()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...