С C # 3.0 я знаю, что вы можете расширять методы, используя номенклатуру 'this'.
Я пытаюсь расширить Math.Cos (двойные радианы), чтобы включить мой новый класс. Я знаю, что могу просто создать метод «Cos» в моем существующем классе, но мне просто интересно посмотреть, как / если это можно сделать ради упражнения.
Попробовав несколько новых вещей, я возвращаюсь к SO, чтобы получить информацию. Я застрял.
Вот что у меня есть на данный момент ...
public class EngMath
{
/// ---------------------------------------------------------------------------
/// Extend the Math Library to include EngVar objects.
/// ---------------------------------------------------------------------------
public static EngVar Abs(this Math m, EngVar A)
{
EngVar C = A.Clone();
C.CoreValue = Math.Abs(C.CoreValue);
return C;
}
public static EngVar Cos(this Math m, EngVar A)
{
EngVar C = A.Clone();
double Conversion = 1;
// just modify the value. Don't modify the exponents at all
// is A degrees? If so, convert to radians.
if (A.isDegrees) Conversion = 180 / Math.PI;
C.CoreValue = Math.Cos(A.CoreValue * Conversion);
// if A is degrees, convert BACK to degrees.
C.CoreValue *= Conversion;
return C;
}
...