Нет, вы не можете объявлять общие операторы в C #.
Операторы и наследование не очень хорошо смешиваются.
Если вы хотите, чтобы Foo + Foo возвращал Foo и Bar + Bar, чтобы вернуть панель, вам нужно будет определить один оператор для каждого класса. Но, поскольку операторы являются статическими, вы не получите преимуществ полиморфизма, потому что оператор для вызова будет решаться во время компиляции:
Foo x = new Bar();
Foo y = new Bar();
var z = x + y; // calls Foo.operator+;