根据特性名称通过反射更新对象特性



我有一个自定义类,大约有30个属性。(即头端名称、头端大小…)

我希望能够通过字符串形式的属性名称来更新属性。

我正在考虑使用反射(不能100%确定这是否是最好的方法),而不是在添加到主对象时需要不断更新的大型事例语句。

通过我发现的东西,我创建了下面的Sub。我把它放在了对象的类之外的另一个位置。

Public Sub UpdateValue(ByRef MainData As FilesMainData, ByVal SearchForObjectPartName As String, ByVal NewValue As Object)
    Dim ObjectPartTypes() As System.Reflection.PropertyInfo = MainData.GetType().GetProperties()
    Dim ObjectPartNames() As System.Reflection.FieldInfo = MainData.GetType().GetFields()
    For I As Integer = 0 To ObjectPartNames.Count - 1
        If ObjectPartTypes(I).Name.Equals(SearchForObjectPartName) Then
            ObjectPartTypes(I).SetValue(ObjectPartTypes(I).GetType, NewValue,CType(I, Object) )
        End If
    Next
End Sub

1) 我遇到了一些错误,知道代码不对,但不确定如何修复2) 我不确定它在正确的位置。

任何帮助都将不胜感激,谢谢。

代码有一些问题:

  1. 您想要更新属性,但在循环中迭代时,您使用了错误的计数

  2. 此外,您使用SetValue不正确,第一个参数必须是包含属性的对象的实例

以下是更新方法:

Public Sub UpdateValue(ByRef MainData As FilesMainData, ByVal SearchForObjectPartName As String, ByVal NewValue As Object)
    Dim ObjectPartTypes() As System.Reflection.PropertyInfo = MainData.GetType().GetProperties()
    For I As Integer = 0 To ObjectPartTypes.Count - 1
        If ObjectPartTypes(I).Name.Equals(SearchForObjectPartName) Then
            ObjectPartTypes(I).SetValue(MainData, NewValue)
        End If
    Next
End Sub

相关内容

  • 没有找到相关文章

最新更新