Ответ 1
Это не полный ответ, но это лучшее, что я придумал до сих пор.
Образец:
$obj$ + $nullableObj$
obj - это выражение типа System.Object или один из его производных типов nullableObj - это выражение типа System.Nullable. (Обратите внимание, что вы не хотите, чтобы nullableObj включал производные типы).
Это не очень хорошее решение, потому что шаблон не обрабатывает коммутативность, поэтому вам нужно скопировать и вставить его и отменить выражения:
$nullableObj$ + $obj$
Кроме того, этот шаблон обрабатывает только десятичные числа, поэтому вам нужно скопировать и вставить его для каждого интересующего вас типа (да, это потенциально много шаблонов).
Одна из хороших новостей: символ + обрабатывает как сложение, так и вычитание, поэтому вам не нужно беспокоиться о вычитании.