Могу ли я перегрузить оператор == в интерфейсе?

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

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

и несколько классов, реализующих IFoo.
Я хочу проверить равенство, а не на основе ReferenceEquality, но два IFoo должны считаться равными, если оба 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 , поэтому FooBar1 и FooBar2 переопределяют Equals (IFoo other) , но это не то, что призвал ==. Я ищу свой код, чтобы заменить a == b на a.Equals (b) везде, но это просто неприятно.

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

18
задан TDaver 21 February 2011 в 13:02
поделиться