У меня есть такой интерфейс:
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)
, но это просто нехорошо.
Что я могу сделать?