Нет, невозможно переопределить оператор из класса, который не участвует в операции.
Вы можете создать класс, реализующий IEualityComparer<SomeClass>
, который можно использовать вместостандартное сравнение в некоторых случаях, например в словаре:
var x = new Dictionary<SomeClass, string>(new SomeClassEqualityComparer());
Если вы просто хотите использовать сравнение в своем собственном классе, вы можете сделать его обычным статическим методом вместо переопределения оператора:
public static bool SomeClassEqual(SomeClass a, SomeClass b) {
if (a.i == b.i) {
return true;
}
// compare some other members as well
return false;
}
Использование:
if (SomeClassEqual(a, b))