我有這樣的功能:角色陣列可以鍵入的System.Type可變
Public Sub DoStuff(ByVal type as System.Type, ByVal value as Object)
End Sub
在「值」參數始終是相同類型的「type」的陣列。我如何循環訪問數組的值?
我希望能夠做這樣的事情:
DoStuff(GetType(Integer), New Integer(){1,2,3})
Public Sub DoStuff(ByVal type as System.Type, ByVal value as Object)
//Strongly types arr as Integer()
Dim arr = SomeCast(type, value)
For Each i in arr
//Do something with i
Next
End Sub
編輯好吧,我想我會添加更多的細節,所以你可以看到我想要做的事。我有一個對象捕獲從其他頁面返回的值。一旦我將它們捕獲,我想循環訪問'Values'屬性。所以上面的DoStuff()將會在'Values'中爲每個字典對象調用。如果字典objct中的值是一個數組,我也想遍歷它。我將通過泛型函數調用添加的類型保存爲System.Type,但也許這不是要走的路。我怎麼寫這個,這樣我可以保存數組的類型,並在以後循環訪問數組?
Public Class PopUpReturnValues
Implements IPopUpReturnValues
Public Sub AddValue(Of T As Structure)(ByVal name As String, ByVal value As T) Implements IPopUpReturnValues.AddValue
_values.Add(name, New PopUpReturnValue() With {.UnderlyingType = GetType(T), .Value = value, .IsArray = False})
End Sub
Public Sub AddArray(Of T As Structure)(ByVal name As String, ByVal values As T()) Implements IPopUpReturnValues.AddArray
_values.Add(name, New PopUpReturnValue() With {.UnderlyingType = GetType(T), .Value = values, .IsArray = True})
End Sub
Public Sub AddStringValue(ByVal name As String, ByVal value As String) Implements IPopUpReturnValues.AddStringValue
_values.Add(name, New PopUpReturnValue() With {.UnderlyingType = GetType(String), .Value = value, .IsArray = False})
End Sub
Public Sub AddStringArray(ByVal name As String, ByVal values As String()) Implements IPopUpReturnValues.AddStringArray
_values.Add(name, New PopUpReturnValue() With {.UnderlyingType = GetType(String), .Value = values, .IsArray = True})
End Sub
Private _values As New Dictionary(Of String, PopUpReturnValue)
Public ReadOnly Property Values() As IDictionary(Of String, PopUpReturnValue)
Get
Return _values
End Get
End Property
Public Class PopUpReturnValue
Public UnderlyingType As Type
Public Value As Object
Public IsArray As Boolean
End Class
End Class
這並非完全可能,並不完全合理。你想做什麼? – SLaks 2010-04-14 17:48:56
有很少的情況,我曾經見過System.Type應該在反射之外使用。即使在我們使用泛型之前,仍然有更好的方法來做你可能做的事情。 – 2010-04-14 18:03:58
好的...他們是什麼? – adam0101 2010-04-14 18:07:05