Property
タイプが のグローバル変数に値を代入しようとしていますDouble
。これProperty
は as として渡されObject
、代入は失敗します。
以下のコード例では、値は実際のオブジェクトに割り当てられることはなく、ローカルでのみ割り当てられます。
Public Class Form1
Friend Home As New Building
Private Sub AssignValues() Handles Me.Load
'Objects of different types are added to a list
Dim listObjects As New List(Of Object)
listObjects.Add(Home.Surface)
'All the Objects in listObjects are assigned a value that
'is stored as String
For Each o As Object In listObjects
SetProperty(o, "45.6")
Debug.Print("Surface = " & Home.Surface.ToString)
Next
End Sub
Private Sub SetProperty(ByRef Variable As Object, ByVal Value As String)
Select Case Variable.GetType
Case GetType(Double)
Variable = CDbl(Value)
Case Else
'...
End Select
End Sub
End Class
Public Class Building
Dim _surface As Double = 0
Public Property Surface As Double
Get
Return _surface
End Get
Set(ByVal value As Double)
_surface = value
End Set
End Property
End Class
プログラムは常に のSurface = 0
代わりに出力します45.6
。私は何を間違っていますか?
ここVariable
で提案されているように、参照として渡そうとしましたが、成功しませんでした。Reflection の使用についても読みましたが、それよりも簡単なものがあるはずです...