Причина, по которой это недопустимо, заключается в том, что точное значение типа для GetType()
должно быть определено во время выполнения. Второй параметр CType может быть только «выражением, которое допустимо в предложении As в выражении Dim, то есть имени любого типа данных, объекта, структуры, класса или интерфейса», для экземпляр, List(Of String)
, который можно определить во время компиляции.
Соответственно законно следующее:
dt_list = CType(ser2.Deserialize(r), List(Of Single))
EDIT:
Однако, приведение к произвольному типу, когда тип не известен во время компиляции, является более сложным. Предлагаемый ответ на этот вопрос на форумах MSDN показывает один подход. Хотя это в C #, я предполагаю, что такой же подход можно использовать и в VB.NET.