Understanding Data Serialization
In my talk, I was talking a little about the process of sending data from the server to client. In pretty much most data storage mechanisms or transports, the process of transporting data requires a serialization and deserialization process. For instance, if you push data to the database, you pull out the primitive data of some data object (whether be a DataRow, LINQ object, custom POCO object, or something else). You generally don't store the whole reference to the object and set the reference to the client. It has to be serialized.
What I actually found is that objects can be automatically serialized using the descriptor.AddProperty method. So when describing teh component, adding an object to the descriptor through AddProperty will automatically deserialize it correctly. Collections do not: this process is done via a JavaScriptConverter. An example of this is: http://msdn.microsoft.com/en-us/library/system.web.script.serialization.javascriptconverter.aspx.
In this example, the converter serializes and deserializes the content using a dictionary of type Dictionary<string, object>. On the client, and object in the collection looks something like the following format: {"Text" : "2", "Value" : "2" }. A list as a string gets passed to the client that represents the whole collection. So in a nutshell, that is the serialization process. To deserialize it on the client, use the Sys.Serialization.JavaScriptSerializer.deserialize() method.