Вы используете ==
, который будет сравнивать коробочные значения для любого поля, где тип является типом значения. Каждый раз, когда значение помещается в рамку, оно создает новый объект, поэтому ==
никогда не будет работать так. Используйте object.Equals
вместо:
foreach (FieldInfo field in fields)
{
if (object.Equals(field.GetValue(instance2), field.GetValue(instance1))
{
Text = "Yes";
}
}
(Использование статического метода здесь означает, что он будет работать, даже если значения null
.)