Have not tried it, but what about using

ArrayList.ToArray(type)

and serialising that? If type is set to the correct object in the arraylist it ought to work.

If not, try casting it to an array and then serialising that:

Ctype(ArrayList.ToArray(type), type())