Поменяйте if (value1 != value2)
на if (!object.Equals(value1, value2))
, и вы должны быть готовы.
Оператор !=
, который вы используете в настоящее время, не является виртуальным, и так как тип времени компиляцииGetValue
звонки - это object
, вы всегда будете тестировать на равенство ссылок (в).
Вместо этого сначала используется статический метод object.Equals(x,y)
, и проверяется ли равенство ссылок.объекты, не совпадающие по ссылкам, будут переданы виртуальному методу Equals
.