Вы не ошиблись, но ваш ответ ближе к комментарию. Это был не вопрос «почему». (Просто предположение, я не голосовал.)

я есть такой интерфейс:

public interface IFoo
{
  int A {get;}
  int B {get;}
}

и у меня есть несколько классов, реализующих IFoo.
Я хочу проверить равенство, не основываясь на ReferenceEquality, но два IFoos следует считать равными, если и A, и B совпадают (на самом деле я проверяю набор пар ключ-значение, отправленных через WCF, поэтому я могу не имеет ReferenceEquality).
Теперь, если у меня есть:

IFoo first = new FooBar1() { A = 1, B = 1};
IFoo second = new FooBar2() { A = 1, B = 1};
if (first == second) {
 //this should return true
}

В настоящее времяIFoo являетсяIEquatable<IFoo>поэтому FooBar1 и FooBar2 переопределяютEquals(IFoo other), но это не то, что вызывается на ==. Я ищу свой код, чтобы заменитьa==b с участиемa.Equals(b) везде, но это просто не приятно.

Что я могу сделать?

Ответы на вопрос(3)

Ваш ответ на вопрос