В ответ на ваши изменения: вы столкнулись с известной проблемой, что в .NET нет интерфейса INumeric
.Он существует в исходном коде, который я видел, но он был закомментирован, что означает, что Microsoft отнеслась к нему достаточно серьезно и столкнулась с некоторыми существенными проблемами.
Хорошее решение Дэнни Варода;Вы также можете расширить его, создав универсальную и неуниверсальную версию интерфейса.Другое решение заключается в добавлении методов в интерфейс, которые представляют числовые операции, для которых вы сейчас используете математические операторы, например, Increment()
.
Я назову здесь интерфейс IHasValue
(частичнопотому что это немного комедийновсе остальное кроме повторяющегося кода математического оператора.
В конце концов, я подозреваю, что сложность этого решения добавляет больше затрат, чем выгод;Я думаю, что я был бы более склонен пойти с чем-то вроде решения Дэнни Варода.