当前位置:  开发笔记 > 编程语言 > 正文

PropertyInfo.GetValue()"对象与目标类型不匹配."

如何解决《PropertyInfo.GetValue()"对象与目标类型不匹配."》经验,为你挑选了1个好方法。

我第一次深入反思,我真的陷入困境.我用谷歌搜索了我能想到的一切.我现在想成为90%.

我试图通过Reflection在自定义类中返回Property的值.

这是我的班级声明:

Public Class Class2
    Private newPropertyValue2 As String

    Public Property NewProperty2() As String
        Get
            Return newPropertyValue2
        End Get
        Set(ByVal value As String)
            newPropertyValue2 = value
        End Set
    End Property   
End Class

我写的通过反射查看类的类看起来像这样:

Public Class ObjectCompare
    Private _OriginalObject As PropertyInfo()

    Public Property OriginalObject() As PropertyInfo()
        Get
            Return _OriginalObject
        End Get
        Set(ByVal value As PropertyInfo())
            _OriginalObject = value
        End Set
    End Property

    Public Sub CompareObjects()
        Dim property_value As Object

        For i As Integer = 0 To OriginalObject.Length - 1
            If OriginalObject(i).GetIndexParameters().Length = 0 Then
                Dim propInfo As PropertyInfo = OriginalObject(i)

                Try
                    property_value = propInfo.GetValue(Me, Nothing)
                Catch ex As TargetException
                End Try   
            End If
        Next
    End Sub
End Class

我在property_value = propInfo.GetValue(Me,Nothing)行上设置了断点,以查看结果.

以下是我调用代码的方式:

Dim test As New Class2
test.NewProperty2 = "2"

Dim go As New ObjectCompare
Dim propInf As PropertyInfo()
propInf = test.GetType.GetProperties()

go.OriginalObject = propInf

go.CompareObjects()

通过反射我可以看到PropertyName和Type,我需要的只是Property的值!现在,当我到达断点时,我得到一个TargetException并且错误消息显示"对象与目标类型不匹配".它现在早上凌晨1点,我遇难了,现在任何帮助都会受到赞赏.我已经搜索过MSDN和谷歌去死,然后上次有趣;)



1> tvanfosson..:

MeObjectCompare对象,它与PropertyInfo派生对象的类不同(Class2).您还需要传入一个从中检索PropertyInfo对象的类型的对象.

Public Sub CompareObjects(ByVal It as Object)
    Dim property_value As Object

    For i As Integer = 0 To OriginalObject.Length - 1
        If OriginalObject(i).GetIndexParameters().Length = 0 Then
            Dim propInfo As PropertyInfo = OriginalObject(i)

            Try
                property_value = propInfo.GetValue(It, Nothing)
            Catch ex As TargetException
            End Try   
        End If
    Next
End Sub

go.CompareObjects(test)

推荐阅读
有风吹过best
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有