I also recommend a database if possible. But to address your question as asked:
Use a structure instead of a class, which is what the UDT is. You'd set up the structure with fixed lengths for the strings and fixed dimensions for the arrays. For example:
Text(4) As String * 100
SomeData(4) As Integer
MoreData(4) As Integer
You'd use it in a similar way that you use the class except you can't change the dimensions of the arrays, and you can't add more text to each string than your upper limit. (In the example above, that's 100 bytes.) Since every structure is a known number of bytes, reading and writing to a file is easy through the Structure's StringValue method.
If you need to alter the size on a per-instance basis, you will have to create your own format for reading and writing the data. For example, the first 4 bytes contains the total length of the record, the next 4 bytes contains the Ubound of the text array, the next four contain the length of the first text element, the next X bytes are text element 1, etc. You can encapsulate this into methods in your class so you can later do:
myClassInstance.ReadFromBinaryStream( bs )