Я пытаюсь сравнить два объекта во время выполнения, используя отражение в цикле через их свойства, используя следующий метод:Параметр Count несовпадение исключение при вызове PropertyInfo.GetValue
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
Всякий раз, когда я проверяю этот метод, я получение исключения несоответствия счетчика параметров из System.Reflection.RuntimeMethodInfo.InvokeArgumentsПроверьте, когда он вызывает prop.GetValue (obj1).
Это происходит независимо от типа obj1 и obj2, а также типа в prop (в моем тестовом примере первое свойство является булевым).
Что я делаю неправильно и как я могу исправить это, чтобы сравнить значения из двух объектов?
Решение
Я добавил следующие строки только внутри для каждого цикла:
Dim paramInfo = prop.GetIndexParameters
If paramInfo.Count > 0 Then Continue For
Первое свойство принимает параметр, который вызывает проблему. Пока что я просто пропущу любое свойство, требующее параметр.
Спасибо, что вы право, собственность принимала в bool, что я не проходил. –