La excepción de error de recuento de parámetros al llamar a PropertyInfo.GetValue

Estoy tratando de comparar dos objetos en tiempo de ejecución usando la reflexión para recorrer sus propiedades usando el siguiente método:

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

Cada vez que pruebo este método, obtengo una excepción de Desajuste de recuento de parámetros de System.Reflection.RuntimeMethodInfo.InvokeArgumentsCheck cuando llama prop.GetValue (obj1).

Esto sucede sin importar el tipo de obj1 y obj2, ni el tipo en prop (en mi caso de prueba, la primera propiedad es un booleano).

¿Qué estoy haciendo mal y cómo puedo solucionarlo para poder comparar los valores de los dos objetos?

Solución

Agregué las siguientes líneas justo dentro de cada bucle:

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

La primera propiedad fue tomar un parámetro, que estaba causando el problema. Por ahora, solo saltearé cualquier propiedad que requiera un parámetro.

Respuestas a la pregunta(3)

Su respuesta a la pregunta