Wyjątek niezgodności licznika parametrów podczas wywoływania właściwości PropertyInfo.GetValue

Próbuję porównać dwa obiekty w środowisku wykonawczym za pomocą odbicia, aby zapętlić ich właściwości za pomocą następującej metody:

Private Sub CompareObjects(obj1 As Object, obj2 As Object)

    Dim objType1 As Type = obj1.GetType()

    Dim propertyInfo = objType1.GetProperties

    For Each prop As PropertyInfo In propertyInfo
        If prop.GetValue(obj1).Equals(prop.GetValue(obj2)) Then
            'Log difference here
        End If
    Next
End Sub

Ilekroć testuję tę metodę, otrzymuję wyjątek Niezgodność licznika parametrów od System.Reflection.RuntimeMethodInfo.InvokeArgumentsCheck, gdy wywołuje prop.GetValue (obj1).

Dzieje się tak bez względu na typ obj1 i obj2, ani typ w rekwizycie (w moim przypadku testowym, pierwsza właściwość jest logiczna).

Co robię źle i jak mogę to naprawić, aby móc porównać wartości z dwóch obiektów?

Rozwiązanie

Dodałem następujące wiersze w środku każdej pętli:

Dim paramInfo = prop.GetIndexParameters
If paramInfo.Count > 0 Then Continue For

Pierwszą właściwością było pobranie parametru powodującego problem. Na razie pominę każdą właściwość, która wymaga parametru.

questionAnswers(3)

yourAnswerToTheQuestion