Есть только несколько типов, для которых вы можете выполнять умножение, и многие из них неявно конвертируются в другие. Вместо объявления универсального типа T
, который может быть практически любым и может поддерживать или не поддерживать умножение, вы можете просто написать перегрузки, которые охватывают все эти параметры.
Этот график показывает неявные преобразования. Исходя из этого, если вы напишите свои методы для поддержки int
, double
и decimal
, это должно охватывать все.
В процессе тестирования вы можете обнаружить, что он работает, как ожидается, для одного типа, но не для другого. Я бы написал модульные тесты для всех этих трех типов.