gpt4 book ai didi

c# - 继承自非泛型 LineSegmentClass 的泛型 Vector 类

转载 作者:行者123 更新时间:2023-11-30 14:10:12 24 4
gpt4 key购买 nike

我正在尝试编写一个可以表示力和尺寸的 Vector 类。通常这不是问题,因为大多数人创建了一个名为 Magnitude 的属性,该属性返回一个 double 值。 Double 不在乎它们代表什么,它们代表力或尺寸就好了。但是,我正在使用 this open-source library called Unit Class Library来表示尺寸和力。

这是我想做的事情。有什么方法可以让属性根据 T 返回不同的类型(同样的事情会在构造函数中发生)。有可能吗?如果可能的话怎么办?

public class Vector<T> : LineSegment
{
ForceUnit _magnitudeForce;

/// <summary>
/// Returns the magnitude of the vector (equals the length of the line segment parent if T is Dimension, if T is Force, return variable )
/// </summary>
public T Magnitude
{
get {

Type typeT = typeof(T);

if (typeT == typeof(Dimension))
{
return base.Length;
}
else if (typeT == typeof(ForceUnit))
{
return _magnitudeForce;
}

...
}

或者我可以用 dynamic 关键字做一些棘手的事情来实现这个目标吗?

或者我是否应该制作一组这样的接口(interface)以置于 Unit Library 之上:

interface IDistance
{
double Centimeters { get; }
double Feet { get; }
double Inches { get; }
double Kilometers { get; }
double Meters { get; }
double Miles { get; }
double Millimeters { get; }
double Sixteenths { get; }
double ThirtySeconds { get; }
double Yards { get; }
}

interface IForceUnit
{
double Kips { get; }
double Newtons { get; }
double Pounds { get; }
}

然后制作一个实现两者的混合类,用作该类的 Magnitude。

我运行 Unit Class Library因此,欢迎提出应该在那里进行的任何更改。但请记住,库的直观性和单位转换能力是我想保留的项目的值(value)。

最佳答案

为什么不直接从 Vector 派生并丢弃作为 Dimension 的父 Magnitude 值?

有这样的东西吗?

public class Load:Vector
{

private ForceUnit _magnitude;

public ForceUnit Magnitude
{
get
{
return this._magnitude;
}
}



public PointLoad(ForceUnit magnitudeOfLoad, Vector directionVector)
: base(...)
{
_magnitude = magnitudeOfLoad;
}

}

关于c# - 继承自非泛型 LineSegmentClass 的泛型 Vector 类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25185121/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com