У меня есть код, который вычисляет абсолютное значение типа пользовательского значения:
public Angle Abs(Angle agl)
{
return (360 - Angle.Degrees);
}
Это не мое настоящее заявление, но оно послужит моей точке зрения. Тогда у меня есть такой метод:
public dynamic DoStuff(Foo f)
{
// f contains a list of value types: int, double, decimal, angle
return Abs(f[0]);
}
public dynamic this[int intIndex] // Within class Foo
{
get { return Items[intIndex]; }
}
У меня такой вопрос: в функции DoStuff () как перегрузить функцию Abs (), чтобы она принимала обычные типы значений с помощью System.Math.Abs (), но также принимала тип Angle?
C # 4.0 поддерживаются ответы доступны.
Я готов иметь отдельную функцию; что-то вроде этого [при условии, что это действительно сработает]:
public dynamic Abs(dynamic dyn)
{
if (dyn.GetType() = typeof(Angle))
{
return Abs(dyn);
}
else
{
return System.Math.Abs(dyn);
}
}