我正在编写一个 C# 程序,它在多个坐标系中进行计算,并在它们之间进行转换。为了防止混淆,我想为每种坐标使用单独的静态值类型。例如:
struct FooSpaceCoords {
double x, y, z;
}
struct BarSpaceCoords {
double x, y, z;
}
现在一个方便且类型安全的矩阵类会很好。但是以下方法不起作用:
public class MatrixTransform<To, From> where To : struct, From : struct
{
.... some implementation that requires .x, .y and .z ....
}
这失败了,因为编译器不知道这一点To
并且From
有成员.x
, .y
& .z
。
我可以定义一个IHaveXYZ
接口,但在我看来,这将导致大量的拳击操作违背整个计划的精神(并且效率较低,如果这很重要的话)。
有没有一种简单的方法可以做我最初想做的事情?