我希望能够动态地转换值,只有在运行时才知道类型.像这样的东西:
myvalue = CType(value, "String, Integer or Boolean")
包含类型值的字符串作为参数传递,也从数据库中读取,并将值作为字符串存储在数据库中.
这可能吗?
Dim bMyValue As Boolean Dim iMyValue As Integer Dim sMyValue As String Dim t As Type = myValue.GetType Select Case t.Name Case "String" sMyValue = ctype(myValue, string) Case "Boolean" bMyValue = ctype(myValue, boolean) Case "Integer" iMyValue = ctype(myValue, Integer) End Select
它有点hacky但它的工作原理.
当然,但myvalue
必须定义为类型Object
,你不一定要那样.也许这是仿制药更好的一个案例.
什么决定使用什么类型?
这是最简单的方法.我用多种类型测试了它.
Sub DoCast(ByVal something As Object) Dim newSomething = Convert.ChangeType(something, something.GetType()) End Sub