Написание класса Point в стили Generic - C#
Формулировка задачи:
Добрый день!
Помогите разобраться почему не работает метод Distance так как нужно!!!
using System;
namespace Geometry
{
public abstract class Point<T> : IPoint<T>
{
public abstract T X { get; set; }
public abstract T Y { get; set; }
public T Z { get; set; }
public abstract void Show();
public abstract T GetDistance<T1>(two);
}
}
namespace Geometry
{
interface IPoint<T>
{
T Z { get; set; }
}
}
using System;
namespace Geometry
{
class Point2D<T> : Point<T>
{
protected T x;
protected T y;
public override T X
{
get => x;
set => x = value;
}
public override T Y
{
get => y;
set => y = value;
}
public Point2D() { }
public Point2D(T x, T y)
{
this.x = x;
this.y = y;
}
public override void Show() => Console.WriteLine($"({x}, {y})");
public T GetDistance<T1>(Point2D<T1> two)
{
return (T)(Object)Math.Sqrt(Math.Pow(this.X - two.X, 2) + Math.Pow(this.Y - two.Y, 2));
}
}
}
using System;
namespace Geometry
{
class Point3D<T> : Point2D<T>, IPoint<T>
{
protected T z;
public new T Z
{
get => z;
set => z = value;
}
public Point3D() { }
public Point3D(T x, T y) : base(x, y) { }
public Point3D(T x, T y, T z) : base(x, y) => this.z = z;
public override void Show() => Console.WriteLine($"({x}, {y}, {z})");
public override T GetDistance(Point<T> two)
{
return Math.Sqrt(Math.Pow(X - two.x, 2) + Math.Pow(this.Y - two.Y, 2) + Math.Pow(this.Z - two.Z, 2));
}
}
}Решение задачи: «Написание класса Point в стили Generic»
textual
Листинг программы
protected Func<T, T, T> add = FuncGenerator.CreateFuncFromExpression<T>(ExpressionType.Add); // c = a + b protected Func<T, T, T> sub = FuncGenerator.CreateFuncFromExpression<T>(ExpressionType.Subtract); // c = a - b protected Func<T, T, T> pow2 = FuncGenerator.CreateFuncFromExpression<T>(ExpressionType.Multiply); // c = a * b //protected Func<T, T, T> pow = FuncGenerator.CreateFuncFromExpression<T>(ExpressionType.Power); // c = Math.Pow(a, b)