Учитывая имя поля, которое существует в классе (public) и не зная тип поля, можно ли сравнить это поле в экземпляре класса с тем же полем в другом экземпляре того же класса? Я пытаюсь сделать это для функции «ValueHasChanged», что-то вроде следующего:
Protected Function ValueHasChanged(ByVal fieldName as String) As Boolean
Dim presentFieldInfo = presentInstance.GetType().GetField(fieldName)
Dim originalFieldInfo = originalInstance.GetType().GetField(fieldName)
Return presentFieldInfo.GetValue(presentInstance) <> originalFieldInfo.GetValue(originalInstance)
End Function
Строка Return
порождает ошибку компилятора о невозможности сравнить операнды типа Object
для оператора '=', что, конечно, имеет смысл. Есть ли способ, которым я могу привести значения или сделать это по-другому, без необходимости проверять тип поля и писать длинный оператор switch / if ... elseif?