I was able to develop the solution to this problem myself. It may not be the most elegant solution, but it is fully functional.
I created a new function to return a structure (as an object):
Public Function StructSetValue(ByRef iStruct As Object, ByVal iFldName As String, ByVal iValue As Object) As Object
Dim tStruct As ValueType = iStruct
Dim field As FieldInfo = tStruct.[GetType]().GetField(iFldName)
Try
field.SetValue(tStruct, iValue)
Return tStruct
Catch ex As NotSupportedException
Return Nothing
End Try
End Function
I rewrote the original method as a function that calls the above:
Public Function DelimStrToStruct(ByVal iArr As String, ByRef iStruct As Object, ByVal iDelimChar As Char) As Object
Dim tLine() As String = iArr.Split(iDelimChar)
Dim i As Short = 0
Dim tStruct As ValueType = iStruct
Dim fields As FieldInfo() = tStruct.[GetType]().GetFields(BindingFlags.Instance Or BindingFlags.[Public])
For Each field As FieldInfo In fields
tStruct = StructSetValue(tStruct, field.Name, tLine(i))
i += 1
Next field
Return tStruct
End Function
Then the call to this becomes:
Dim trec As RecordType
trec = DelimStrToStruct(jElem, trec, "^")
All of this does the necessary work to "unbox" the structure.
If anyone has any commentary or suggested improvements, I would more that welcome them.