0

リフレクションについてhttps://stackoverflow.com/a/4132070/1529149を見ていました..

特にこれ

Public Sub setProperty(ByVal obj As Object, ByVal propName As String, ByVal newValue As Object)
    Dim prop As Reflection.PropertyInfo = obj.GetType().GetProperty(propName)
    If Not prop Is Nothing AndAlso prop.CanWrite Then
    prop.SetValue(obj, newValue, Nothing)
    End If
End Sub

しかし、最初の変数を文字列または動的なものとして入力する必要があります..

ポイント設定が見当たりません

setProperty(FixedObject, "Dynamic Property", "Dynamic Results")

それがはるかに強力になるとき

setProperty("Dynamic Object", "Dynamic Property", "Dynamic Results")

例えば:

Dim billy As String = "Label"
Dim bob   As Integer = 1

setProperty(billy+bob, "Text", "Results")

Label1.Text = "results" を作成します

そのようなものを手に入れるための助けはありますか?(ps私はおそらくどこかでボブを文字列としてキャストしなければならないことを理解していますが、私はまだVBに慣れていません)

4

1 に答える 1

0

リフレクションを使用する理由がわかりませんが、これは機能します。

Public Class Form1
    Private Sub Form1Load(sender As Object, e As EventArgs) Handles Me.Load
        Dim billy As String = "Label"
        Dim bob As Integer = 1
        Dim label As Object = Me.Controls(billy & bob)
        SetProperty(label, "Text", "Results")
    End Sub

    Public Sub SetProperty(obj As Object, propName As String, newValue As Object)
        Dim prop As Reflection.PropertyInfo = obj.GetType().GetProperty(propName)
        If Not prop Is Nothing AndAlso prop.CanWrite Then
            prop.SetValue(obj, newValue, Nothing)
        End If
    End Sub
End Class  
于 2013-03-29T20:38:17.960 に答える