Если не имеет смысла, чтобы привести объект к тип переменной (тип, который неизвестен во время компиляции). Вся точка кастинга - это указать точный тип. Я подозреваю, однако, что вместо использования объекта Type
вам действительно нужен общий метод или общий класс. Например:
Public Function DoSomethingGenerically(Of T)(MyParameter As MyType) As T
Return CType(MyParameter.MyProperty, T)
End Function
Это действительно бессмысленно метод, так как все это делает отливают имущество и вернуть его в качестве этого типа, но он показывает, как можно привести к типу T
, не зная, что, в частности, T
случается быть. Тогда вы могли бы назвать это так:
Dim x As New MyType()
Dim y As MyType2 = DoSomethingGenerically(Of MyType2)(x)
Именно как реализуются List(Of T)
класс, и другие подобные общие классы. Кроме этого, вместо того чтобы сделать индивидуальный метод общего, они делают весь класс родовое, например:
Public Class MyList(Of T)
Public Sub Add(item As T)
' ...
End Sub
End Class
'CType' используется, чтобы сообщить компилятору, какой тип объекта является, поэтому' 'expression' и type' должны быть известны ** во время компиляции **. Однако, какую ошибку вы получаете вообще? –
И ГДЕ вы будете хранить результат, если он неизвестен до времени выполнения? Для такого преобразования вы можете просто положиться на ** System.Convert.ChangeType **. Это еще одна проблема XY? –
@TimSchmelter, ошибка: «Тип« objType »не определен» – Brij