How do you save a Visual Basic dictionary to a file?

How does one save a Visual Basic dictionary as a file?

I tried the "tostring" method to convert the dictionary to a string.  That allowed me to save the dictionary to a file, but I do not know how to get it back as there is no "todictionary" method which works with strings as I can tell.

Any thoughts?
schlaffAsked:
Who is Participating?

Improve company productivity with a Business Account.Sign Up

x
 
Jacques Bourgeois (James Burger)Connect With a Mentor PresidentCommented:
The simplest way it to serialize it. You can use either a BinaryFormatter object to have a compact file, or a SoapFormatter to get an XML file.

In order to do that however, all the objects in the collection must be from classes that have been marked with the SerializableAttribute. All the collections and most of the classes in the framework have been built to be serialized, but if you use a custom class, it will need to have the SerializableAttribute in order to work with the formatters.

Otherwise, you end up doing as we did in the old days: loop through the collection, extract the properties of each of the objects, and write them to a file. Do the reverse to recreate the collection,

The formatters will do that for you with 3 lines of code to read and 3 lines of code to write (disregarding the Try...Catch that should usually always be there when handing files). Look at the documentation for the BinaryFormatter, they have a clear example with a HashTable.
0
 
Fernando SotoRetiredCommented:
In the Dictionary what are the data types of the Key and Value entries?
0
 
Mike TomlinsonMiddle School Assistant TeacherCommented:
What is being stored in the dictionary?...what type is the key?...what type is the value?
0
The 14th Annual Expert Award Winners

The results are in! Meet the top members of our 2017 Expert Awards. Congratulations to all who qualified!

 
schlaffAuthor Commented:
I am working with three dictionaries -- a dictionary with string keys and string values, a dictionary with string keys and dictionaries as values and a dictionary with string keys and a class as values.
0
 
schlaffAuthor Commented:
I know that I could write a routine to save the class keys and values separately and retrieve them in the same fashion.  I was hoping that VB.net provided for a more streamlined method.
0
 
käµfm³d 👽Commented:
One correction to JamesBurger's answer:  You cannot serialize generic types (which a Dictionary is) via the SoapFormatter. On top of that, it has been deprecated, so it could possibly be removed in an update to the Framework (but it hasn't happened yet, so who knows). You should be able to use the BinaryFormatter without incident.
0
 
Jacques Bourgeois (James Burger)PresidentCommented:
The SoapFormatter was deprecated in .NET 2.0 in 2005. But it is still living 8 years later, and in framework 4.5, we do not get any warning that it is deprecated when using it, nor is the documentation stating that it is.

I thus suspect that they dropped their decision of eventually scrapping it. I cannot find any official reference from Microsoft that states that it is deprecated anymore. However, because old stuff does not die easily on the Internet, you still see programmers everywhere repeating that it is deprecated.

I use the BinaryFormatter for most of my work and was not aware that the SoapFormatter was having problems with generics. Thanks for pointing that out kaufmed.
0
 
käµfm³d 👽Commented:
From http://msdn.microsoft.com/en-us/library/system.runtime.serialization.formatters.soap.soapformatter.aspx:

Beginning with the .NET Framework 2.0, this class is obsolete. Use BinaryFormatter instead.
0
Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

All Courses

From novice to tech pro — start learning today.