I am writing application that use resources, and I have some questions about it:
Thank you very much.
Embedded resources cannot be changed at run-time. You can access them as a collection. For instance:
' Get resource value by string name
Dim value1 As Object = My.Resources.ResourceManager.GetObject("name1")
Dim value2 As String = My.Resources.ResourceManager.GetString("name2")
' Loop through list of resources
Dim rset As ResourceSet = My.Resources.ResourceManager.GetResourceSet(Thread.CurrentThread.CurrentUICulture, True, True)
For Each i As DictionaryEntry In rset
Dim name As String = i.Key
Dim value As Object = i.Value
Next
If you want to, at run-time, read and modify resources which are stored in an external .resources
file, the .NET framework provides some classes in the System.Resources
namespace which you can use. The ResourceReader
class allows you to read a .resources
file, like this:
Using reader As New ResourceReader("test.resources")
For Each i As DictionaryEntry In reader
Dim name As String = i.Key
Dim value As Object = i.Value
Next
End Using
And you can use the ResourceWriter
class to create a new .resources
file, like this:
Using writer As New ResourceWriter("test.resources")
writer.AddResource("name1", value1)
writer.AddResource("name2", value2)
End Using
However, the real question to ask is, do you have to use .resources
files? Typically .resource files are only used as a assembly-building-step so that they can be embedded in the assembly. If you want to store data in external files, typically you would choose to store them in some other format. .NET provides many object serialization options which make it easy to store objects in XML, text, binary, or other types of files as well as databases.