40.6. Custom Resources
Although Visual Studio provides good support for international application development using resource files, there are times when it is not possible to get the level of control required using the default behavior. This section delves a little deeper into how you can serialize custom objects to the resource file and how you can generate designer files, which give you strongly typed accessor methods for resource files you have created.
Visual Studio 2008 enables you to store strings, images, icons, audio files, and other files within a resource file. You can do all this using the rich user interface provided. To store a more complex data type within a resource file you need to serialize it into a string representation that can be included within the resource file.
The first step in adding any data type to a resource file is to make that data type serializable. You can do this easily by marking the class with the Serializable attribute. Once it is marked as serializable, you can add the object to a resource file using an implementation of the IResourceWriter interface — for example, ResXResourceWriter:
<Serializable()> _ Public Class Person Public Name As String Public Height As Integer Public Weight As Double End Class Dim p As New Person p.Name = "Bob" p.Height = 167 p.Weight = 69.5 Dim rWriter As New ResXResourceWriter("foo.resx") rWriter.AddResource("DefaultPerson", p) rWriter.Close()
Serializing an object this way has a couple of drawbacks, however: