Как правильно написать методы расширения Math для междунар, двойные, с плавающей точкой, и т.д.?

Я хочу написать серию методов расширения для упрощения математических операций. Например:

Вместо

Math.Pow(2, 5)

Я хотел бы, чтобы иметь возможность написать

2.Power(5) 

что (на мой взгляд) яснее.

Проблема в том, как я могу иметь дело с различными числовыми типами при написании расширения методов? Нужно ли писать метод расширения для каждого типа:

public static double Power(this double number, double power) {
    return Math.Pow(number, power);
}
public static double Power(this int number, double power) {
    return Math.Pow(number, power);
}
public static double Power(this float number, double power) {
    return Math.Pow(number, power);
}

Или есть уловка, чтобы позволить одной работы метода расширения для любого числового типа?

Спасибо!

Ответы на вопрос(4)

Ваш ответ на вопрос