C++ みたいに、複数の実体を生むわけじゃないから、
static である operator はジェネリックなコード中では使えないのよね。

IAddable だの IAbelGroup だのを継承して
virtual Type Add(Type) を実装しておけば
a + b が a.Add(b) に展開される、
みたいな仕様を追加しないと駄目なんじゃないかと。